From 7e86b0b94006b66a3107ee73ac18b60c5607fc50 Mon Sep 17 00:00:00 2001 From: ayasini <101363609+ayasini@users.noreply.github.com> Date: Mon, 12 Feb 2024 01:15:19 +0200 Subject: [PATCH 1/2] TMA-4.7 release, full flavor, csv format --- TMA_Metrics-full.csv | 662 +++++++++++++++++++++++-------------------- 1 file changed, 348 insertions(+), 314 deletions(-) diff --git a/TMA_Metrics-full.csv b/TMA_Metrics-full.csv index 25a5428b..fc4e4291 100755 --- a/TMA_Metrics-full.csv +++ b/TMA_Metrics-full.csv @@ -1,314 +1,348 @@ -TMA,Version,4.5-full,,,,,,,,,,,,,,,,,,,,,,,,Send us your feedback to Ahmad dot Yasin at intel dot com,,,,,4.4984,,,full,full,full,full,full -.,,,,,,,Server,,,,Server,,,Server,Server,,Server,,Server,,Server,,Server,,Server,,,,,,,,,,,,, -Key,Level1,Level2,Level3,Level4,Level5,Level6,SPR,ADL/RPL,TGL,RKL,ICX,ICL,CNL,CPX,CLX,KBLR/CFL/CML,SKX,SKL/KBL,BDX,BDW,HSX,HSW,IVT,IVB,JKT/SNB-EP,SNB,Locate-with,Count Domain,Metric Description,Threshold,Version,Metric Group,Metric Max,flavor,Tool,level,Tuning Hint,Link -FE,Frontend_Bound,,,,,,,,,,,PERF_METRICS.FRONTEND_BOUND / #PERF_METRICS_SUM - INT_MISC.UOP_DROPPING / SLOTS,,,,,,,,,,,,,,IDQ_UOPS_NOT_DELIVERED.CORE / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.LATENCY_GE_4_PS,Slots,This category represents fraction of slots where the processor's Frontend undersupplies its Backend. Frontend denotes the first part of the processor core responsible to fetch operations that are executed later on by the Backend part. Within the Frontend; a branch predictor predicts the next address to fetch; cache-lines are fetched from the memory subsystem; parsed into instructions; and lastly decoded into micro-operations (uops). Ideally the Frontend can issue Pipeline_Width uops every cycle to the Backend. Frontend Bound denotes unutilized issue-slots when there is no Backend stall; i.e. bubbles where Frontend delivered no uops while Backend could have accepted them. For example; stalls due to instruction-cache misses would be categorized under Frontend Bound.,> 0.15,4.3,TmaL1;PGO,,pub/v3,;perf,1,, -FE,,Fetch_Latency,,,,,,( PERF_METRICS.FETCH_LATENCY / #PERF_METRICS_SUM - INT_MISC.UOP_DROPPING / SLOTS ),,,,( #Pipeline_Width * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE - INT_MISC.UOP_DROPPING ) / SLOTS,,,,,,#Pipeline_Width * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / SLOTS,,#Pipeline_Width * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / SLOTS,,,,,,#Pipeline_Width * #Frontend_Latency_Cycles / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? RS_EVENTS.EMPTY_END : FRONTEND_RETIRED.LATENCY_GE_16_PS;FRONTEND_RETIRED.LATENCY_GE_8_PS,Slots,This metric represents fraction of slots the CPU was stalled due to Frontend latency issues. For example; instruction-cache misses; iTLB misses or fetch stalls after a branch misprediction are categorized under Frontend Latency. In such cases; the Frontend eventually delivers no uops for some period.,> 0.10 & P,4.3,Frontend;TmaL2,,pub/v3,;,2,, -FE,,,ICache_Misses,,,,,ICACHE_DATA.STALLS / CLKS,,,,,ICACHE_16B.IFDATA_STALL / CLKS,,,,,( ICACHE_16B.IFDATA_STALL + 2 * ICACHE_16B.IFDATA_STALL:c1:e1 ) / CLKS,,,,ICACHE.IFDATA_STALL / CLKS,,ICACHE.IFETCH_STALL / CLKS - ITLB_Misses,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.L2_MISS_PS;FRONTEND_RETIRED.L1I_MISS_PS,Clocks,This metric represents fraction of cycles the CPU was stalled due to instruction cache misses.,> 0.05 & P,4,BigFoot;FetchLat;IcMiss,,pub/v3,;,3,Using compiler's Profile-Guided Optimization (PGO) can reduce i-cache misses through improved hot code layout., -FE,,,ITLB_Misses,,,,,ICACHE_TAG.STALLS / CLKS,,,,,,,,,,ICACHE_64B.IFTAG_STALL / CLKS,,,,,,,,#ITLB_Miss_Cycles / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? ITLB_MISSES.WALK_COMPLETED : FRONTEND_RETIRED.STLB_MISS_PS;FRONTEND_RETIRED.ITLB_MISS_PS,Clocks,This metric represents fraction of cycles the CPU was stalled due to Instruction TLB (ITLB) misses.,> 0.05 & P,3.2,BigFoot;FetchLat;MemoryTLB,,pub/v3,;,3,"Consider large 2M pages for code (selectively prefer hot large-size function, due to limited 2M entries). Linux options: standard binaries use libhugetlbfs; Hfsort.",https://github.com/libhugetlbfs/libhugetlbfs;https://research.fb.com/publications/optimizing-function-placement-for-large-scale-data-center-applications-2/ -FE,,,Branch_Resteers,,,,,,,,,,,,,,,INT_MISC.CLEAR_RESTEER_CYCLES / CLKS + Unknown_Branches,,,,,,,,#BAClear_Cost * ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ) / CLKS,BR_MISP_RETIRED.ALL_BRANCHES,Clocks_Estimated,This metric represents fraction of cycles the CPU was stalled due to Branch Resteers. Branch Resteers estimates the Frontend delay in fetching operations from corrected path; following all sorts of miss-predicted branches. For example; branchy code with lots of miss-predictions might get categorized under Branch Resteers. Note the value of this node may overlap with its siblings.,> 0.05 & P; ~overlap,4.2,FetchLat,,pub/v3,;,3,, -FE,,,,Mispredicts_Resteers,,,,,,,,,,,,,,#Mispred_Clears_Fraction * INT_MISC.CLEAR_RESTEER_CYCLES / CLKS,,BR_MISP_RETIRED.ALL_BRANCHES * Branch_Resteers / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ),,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : INT_MISC.CLEAR_RESTEER_CYCLES,Clocks,This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Branch Misprediction at execution stage. ,> 0.05 & P; $issueBM,4.3,BadSpec;BrMispredicts,,pub/v4.3,;,4,, -FE,,,,Clears_Resteers,,,,,,,,,,,,,,( 1 - #Mispred_Clears_Fraction ) * INT_MISC.CLEAR_RESTEER_CYCLES / CLKS,,MACHINE_CLEARS.COUNT * Branch_Resteers / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ),,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : INT_MISC.CLEAR_RESTEER_CYCLES,Clocks,This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Machine Clears. ,> 0.05 & P; $issueMC,4.3,BadSpec;MachineClears,,pub/v4.3,;,4,, -FE,,,,Unknown_Branches,,,,INT_MISC.UNKNOWN_BRANCH_CYCLES / CLKS,,,,,,,,,,#BAClear_Cost * BACLEARS.ANY / CLKS,,Branch_Resteers - Mispredicts_Resteers - Clears_Resteers,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL/ICL/ICX/TGL/RKL ? BACLEARS.ANY : FRONTEND_RETIRED.UNKNOWN_BRANCH,Clocks,This metric represents fraction of cycles the CPU was stalled due to new branch address clears. These are fetched branches the Branch Prediction Unit was unable to recognize (e.g. first time the branch is fetched or hitting BTB capacity limit).,> 0.05 & P,4.3,BigFoot;FetchLat,,pub/v4.3,;,4,, -FE,,,DSB_Switches,,,,,,,,,,,,,,,,,,,,,,,DSB2MITE_SWITCHES.PENALTY_CYCLES / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.DSB_MISS_PS,Clocks,This metric represents fraction of cycles the CPU was stalled due to switches from DSB to MITE pipelines. The DSB (decoded i-cache) is a Uop Cache where the front-end directly delivers Uops (micro operations) avoiding heavy x86 decoding. The DSB pipeline has shorter latency and delivered higher bandwidth than the MITE (legacy instruction decode pipeline). Switching between the two pipelines can cause penalties hence this metric measures the exposed penalty.,> 0.05 & P; $issueFB,4.3,DSBmiss;FetchLat,,pub/v3.6,;,3,See section 'Optimization for Decoded Icache' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -FE,,,LCP,,,,,DECODE.LCP / CLKS,,,,ILD_STALL.LCP / CLKS,,,,,,,,,,,,,,ILD_STALL.LCP / CLKS,,Clocks,This metric represents fraction of cycles CPU was stalled due to Length Changing Prefixes (LCPs). Using proper compiler flags or Intel Compiler by default will certainly avoid this. #Link: Optimization Guide about LCP BKMs.,> 0.05 & P; $issueFB,4.4,FetchLat,,pub/v4.4,;,3,See section 'Length-Changing Prefixes (LCP)' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -FE,,,MS_Switches,,,,,#MS_Switches_Cost * UOPS_RETIRED.MS:c1:e1 / #Retire_Fraction / CLKS,,,,,,,,,,,,,,,,,,#MS_Switches_Cost * IDQ.MS_SWITCHES / CLKS,ADL/SPR ? FRONTEND_RETIRED.MS_FLOWS : IDQ.MS_SWITCHES,Clocks,This metric estimates the fraction of cycles when the CPU was stalled due to switches of uop delivery to the Microcode Sequencer (MS). Commonly used instructions are optimized for delivery by the DSB (decoded i-cache) or MITE (legacy instruction decode) pipelines. Certain operations cannot be handled natively by the execution pipeline; and must be performed by microcode (small programs injected into the execution stream). Switching to the MS too often can negatively impact performance. The MS is designated to deliver long uop flows required by CISC instructions like CPUID; or uncommon conditions like Floating Point Assists when dealing with Denormals.,> 0.05 & P; $issueMC; $issueMS; $issueMV; $issueSO,4.5,FetchLat;MicroSeq,1,pub/v3.4,;,3,, -FE,,Fetch_Bandwidth,,,,,,,,,,"max( 0 , Frontend_Bound - Fetch_Latency )",,,,,,,,,,,,,,Frontend_Bound - Fetch_Latency,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_2_PS,Slots,This metric represents fraction of slots the CPU was stalled due to Frontend bandwidth issues. For example; inefficiencies at the instruction decoders; or restrictions for caching in the DSB (decoded uops cache) are categorized under Fetch Bandwidth. In such cases; the Frontend typically delivers suboptimal amount of uops to the Backend.,> 0.1 & P & #HighIPC; $issueFB,4.3,FetchBW;Frontend;TmaL2,,pub/v3,;,2,, -FE,,,MITE,,,,,( IDQ.MITE_CYCLES_ANY - IDQ.MITE_CYCLES_OK ) / CORE_CLKS / 2,,,,( IDQ.MITE_CYCLES_ANY - IDQ.MITE_CYCLES_OK ) / CORE_CLKS / 2,,,,,,,,,,,,( IDQ.ALL_MITE_CYCLES_ANY_UOPS - IDQ.ALL_MITE_CYCLES_4_UOPS ) / CORE_CLKS / 2,,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.ANY_DSB_MISS,Slots_Estimated,This metric represents Core fraction of cycles in which CPU was likely limited due to the MITE pipeline (the legacy decode pipeline). This pipeline is used for code that was not pre-cached in the DSB or LSD. For example; inefficiencies due to asymmetric decoders; use of long immediate or LCP can manifest as MITE fetch bandwidth bottleneck.,> 0.1 & P,4.5,DSBmiss;FetchBW,,pub/v4,;,3,Consider tuning codegen of 'small hotspots' that can fit in DSB. Read about 'Decoded ICache' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -FE,,,,Decoder0_Alone,,,,,,,,,,,,,,( INST_DECODED.DECODERS:c1 - INST_DECODED.DECODERS:c2 ) / CORE_CLKS / 2,,,,,,,,,,Slots_Estimated,This metric represents fraction of cycles where decoder-0 was the only active decoder,> 0.1 & P; $issueD0,4.5,DSBmiss;FetchBW,,,,4,, -FE,,,,MITE_4wide,,,,#NA,,,,( IDQ.MITE_UOPS:c4 - IDQ.MITE_UOPS:c5 ) / CLKS,,,,,,,,,,,,,,,,Core_Clocks,This metric represents fraction of cycles where (only) 4 uops were delivered by the MITE pipeline,> 0.05 & P,4.4,DSBmiss;FetchBW,,,,4,, -FE,,,DSB,,,,,,,,,( IDQ.DSB_CYCLES_ANY - IDQ.DSB_CYCLES_OK ) / CORE_CLKS / 2,,,,,,,,,,,,( IDQ.ALL_DSB_CYCLES_ANY_UOPS - IDQ.ALL_DSB_CYCLES_4_UOPS ) / CORE_CLKS / 2,,,,Slots_Estimated,This metric represents Core fraction of cycles in which CPU was likely limited due to DSB (decoded uop cache) fetch pipeline. For example; inefficient utilization of the DSB cache structure or bank conflict when reading from it; are categorized here.,> 0.15 & P,4.2,DSB;FetchBW,,pub/v4,;,3,, -FE,,,LSD,,,,#NA,,,,#NA,( LSD.CYCLES_ACTIVE - LSD.CYCLES_OK ) / CORE_CLKS / 2,,,#NA,( LSD.CYCLES_ACTIVE - LSD.CYCLES_4_UOPS ) / CORE_CLKS / 2,,,,,,,,,,#NA,,Slots_Estimated,This metric represents Core fraction of cycles in which CPU was likely limited due to LSD (Loop Stream Detector) unit. LSD typically does well sustaining Uop supply. However; in some rare cases; optimal uop-delivery could not be reached for small loops whose size (in terms of number of uops) does not suit well the LSD structure.,> 0.15 & P,4.4,FetchBW;LSD,,pub/v4,,3,, -BAD,Bad_Speculation,,,,,,,,,,,"max( 1 - ( Frontend_Bound + Backend_Bound + Retiring ) , 0 )",( UOPS_ISSUED.ANY - #Retired_Slots + #Pipeline_Width * INT_MISC.ALL_RECOVERY_CYCLES ) / SLOTS,,,,,,,,,,,,,( UOPS_ISSUED.ANY - #Retired_Slots + #Pipeline_Width * #Recovery_Cycles ) / SLOTS,#NA,Slots,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.,> 0.15,4.1,TmaL1,,pub/v3,;perf,1,, -BAD,,Branch_Mispredicts,,,,,,PERF_METRICS.BRANCH_MISPREDICTS / #PERF_METRICS_SUM,,,,,,,,,,,,,,,,,,#Mispred_Clears_Fraction * Bad_Speculation,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? BR_MISP_RETIRED.ALL_BRANCHES_PS : ICL/ICX/RKL/TGL ? BR_MISP_RETIRED.ALL_BRANCHES : TOPDOWN.BR_MISPREDICT_SLOTS,Slots,This metric represents fraction of slots the CPU has wasted due to Branch Misprediction. These slots are either wasted by uops fetched from an incorrectly speculated program path; or stalls when the out-of-order part of the machine needs to recover its state from a speculative path.,> 0.1 & P; $issueBM,4.3,BadSpec;BrMispredicts;TmaL2,,pub/v3,;,2,Using profile feedback in the compiler may help. Please see the Optimization Manual for general strategies for addressing branch misprediction issues.,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -BAD,,Machine_Clears,,,,,,,,,,"max( 0 , Bad_Speculation - Branch_Mispredicts )",,,,,,,,,,,,,,Bad_Speculation - Branch_Mispredicts,MACHINE_CLEARS.COUNT,Slots,This metric represents fraction of slots the CPU has wasted due to Machine Clears. These slots are either wasted by uops fetched prior to the clear; or stalls the out-of-order portion of the machine needs to recover its state after the clear. For example; this can happen due to memory ordering Nukes (e.g. Memory Disambiguation) or Self-Modifying-Code (SMC) nukes.,> 0.1 & P; $issueMC; $issueSyncxn,4.5,BadSpec;MachineClears;TmaL2,,pub/v3,;,2,"See ""Memory Disambiguation"" in Optimization Manual and:",https://software.intel.com/sites/default/files/m/d/4/1/d/8/sma.pdf -BE,Backend_Bound,,,,,,,PERF_METRICS.BACKEND_BOUND / #PERF_METRICS_SUM,,,,PERF_METRICS.BACKEND_BOUND / #PERF_METRICS_SUM + ( #Pipeline_Width * INT_MISC.RECOVERY_CYCLES:c1:e1 ) / SLOTS,,,,,,1 - Frontend_Bound - ( UOPS_ISSUED.ANY + #Pipeline_Width * #Recovery_Cycles ) / SLOTS,,,,,,,,1 - ( Frontend_Bound + Bad_Speculation + Retiring ),SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : TOPDOWN.BACKEND_BOUND_SLOTS,Slots,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.,> 0.2,4.3,TmaL1,,pub/v3,;perf,1,, -BE/Mem,,Memory_Bound,,,,,,PERF_METRICS.MEMORY_BOUND / #PERF_METRICS_SUM,,,,,,,,,,,,,,,,,,#Memory_Bound_Fraction * Backend_Bound,#NA,Slots,This metric represents fraction of slots the Memory subsystem within the Backend was a bottleneck. Memory Bound estimates fraction of slots where pipeline is likely stalled due to demand load or store instructions. This accounts mainly for (1) non-completed in-flight memory demand loads which coincides with execution units starvation; in addition to (2) cases where stores could impose backpressure on the pipeline when many of them get buffered at the same time (less common out of the two).,> 0.2 & P,4.1,Backend;TmaL2,,pub/v3,;,2,, -BE/Mem,,,L1_Bound,,,,,"max( ( EXE_ACTIVITY.BOUND_ON_LOADS - MEMORY_ACTIVITY.STALLS_L1D_MISS ) / CLKS , 0 )",,,,,,,,,,,,"max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CLKS , 0 )",,,,"max( ( #STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_PENDING ) / CLKS , 0 )",,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L1_HIT_PS;MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS : MEM_LOAD_RETIRED.L1_HIT_PS;MEM_LOAD_RETIRED.FB_HIT_PS,Stalls,This metric estimates how often the CPU was stalled without loads missing the L1 data cache. The L1 data cache typically has the shortest latency. However; in certain cases like loads blocked on older stores; a load might suffer due to high latency even though it is being satisfied by the L1. Another example is loads who miss in the TLB. These cases are characterized by execution unit stalls; while some non-completed demand load lives in the machine without having that demand load missing the L1 cache.,> 0.1 & P; $issueL1; $issueMC,4.4,CacheMisses;MemoryBound;TmaL3mem,,pub/v3,;,3,, -BE/Mem,,,,DTLB_Load,,,,"min( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT:c1 + DTLB_LOAD_MISSES.WALK_ACTIVE , max( CYCLE_ACTIVITY.CYCLES_MEM_ANY - MEMORY_ACTIVITY.CYCLES_L1D_MISS , 0 ) ) / CLKS",,,,,,,,,,"min( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT:c1 + DTLB_LOAD_MISSES.WALK_ACTIVE , max( CYCLE_ACTIVITY.CYCLES_MEM_ANY - CYCLE_ACTIVITY.CYCLES_L1D_MISS , 0 ) ) / CLKS",,( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT + DTLB_LOAD_MISSES.WALK_DURATION:c1 + 7 * DTLB_LOAD_MISSES.WALK_COMPLETED ) / CLKS,,,,,,( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT + DTLB_LOAD_MISSES.WALK_DURATION ) / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.STLB_MISS_LOADS_PS : MEM_INST_RETIRED.STLB_MISS_LOADS_PS,Clocks_Estimated,This metric roughly estimates the fraction of cycles where the Data TLB (DTLB) was missed by load accesses. TLBs (Translation Look-aside Buffers) are processor caches for recently used entries out of the Page Tables that are used to map virtual- to physical-addresses by the operating system. This metric approximates the potential delay of demand loads missing the first-level data TLB (assuming worst case scenario with back to back misses to different pages). This includes hitting in the second-level TLB (STLB) as well as performing a hardware page walk on an STLB miss.,> 0.1 & P; $issueTLB,4.4,MemoryTLB,,pub/v3.4,;,4,,#Link: Linux THP pages; similar Windows link. -BE/Mem,,,,,Load_STLB_Hit,,,,,,,,,,,,,DTLB_Load - Load_STLB_Miss,,,,,,,,#NA,,Clocks_Estimated,"This metric roughly estimates the fraction of cycles where the (first level) DTLB was missed by load accesses, that later on hit in second-level TLB (STLB)",> 0.05 & P,4.2,MemoryTLB,,,,5,, -BE/Mem,,,,,Load_STLB_Miss,,,,,,,,,,,,,DTLB_LOAD_MISSES.WALK_ACTIVE / CLKS,,,,,,,,#NA,,Clocks_Calculated,"This metric estimates the fraction of cycles where the Second-level TLB (STLB) was missed by load accesses, performing a hardware page walk",> 0.05 & P,3.6,MemoryTLB,,,,5,, -BE/Mem,,,,Store_Fwd_Blk,,,,,,,,,,,,,,,,,,,,13 * LD_BLOCKS.STORE_FORWARD / CLKS,,,,Clocks_Estimated,This metric roughly estimates fraction of cycles when the memory subsystem had loads blocked since they could not forward data from earlier (in program order) overlapping stores. To streamline memory operations in the pipeline; a load can avoid waiting for memory if a prior in-flight store is writing the data that the load wants to read (store forwarding process). However; in some cases the load may be blocked for a significant time pending the store forward. For example; when the prior store is writing a smaller region than the load is reading.,> 0.1 & P,3.3,,1,,;,4,, -BE/Mem,,,,Lock_Latency,,,,,,,,"( 16 * max( 0 , MEM_INST_RETIRED.LOCK_LOADS_PS - L2_RQSTS.ALL_RFO ) + #Mem_Lock_St_Fraction * ( #Mem_L2_Store_Cost * L2_RQSTS.RFO_HIT + #ORO_Demand_RFO_C1 ) ) / CLKS",,,,,,"( 12 * max( 0 , MEM_INST_RETIRED.LOCK_LOADS_PS - L2_RQSTS.ALL_RFO ) + #Mem_Lock_St_Fraction * ( #Mem_L2_Store_Cost * L2_RQSTS.RFO_HIT + #ORO_Demand_RFO_C1 ) ) / CLKS",,,,,,#Mem_Lock_St_Fraction * #ORO_Demand_RFO_C1 / CLKS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.LOCK_LOADS_PS : MEM_INST_RETIRED.LOCK_LOADS_PS,Clocks,This metric represents fraction of cycles the CPU spent handling cache misses due to lock operations. Due to the microarchitecture handling of locks; they are classified as L1_Bound regardless of what memory source satisfied them.,> 0.2 & P; $issueRFO,4.3,Offcore,1,,;,4,, -BE/Mem,,,,Split_Loads,,,,,,,,,,,,,,,,,,Load_Miss_Real_Latency * LD_BLOCKS.NO_SR / CLKS,,13 * LD_BLOCKS.NO_SR / CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.SPLIT_LOADS_PS : MEM_INST_RETIRED.SPLIT_LOADS_PS,Clocks_Calculated,This metric estimates fraction of cycles handling memory load split accesses - load that cross 64-byte cache line boundary. ,> 0.2 & P,3.3,,1,,;,4,Consider aligning data or hot structure fields. See the Optimization Manual for more details, -BE/Mem,,,,4K_Aliasing,,,,#NA,,,,,,,,,,,,,,,,LD_BLOCKS_PARTIAL.ADDRESS_ALIAS / CLKS,,,,Clocks_Estimated,This metric estimates how often memory load accesses were aliased by preceding stores (in program order) with a 4K address offset. False match is possible; which incur a few cycles load re-issue. However; the short re-issue duration is often hidden by the out-of-order core and HW optimizations; hence a user may safely ignore a high value of this metric unless it manages to propagate up into parent nodes of the hierarchy (e.g. to L1_Bound).,> 0.2 & P,3.4,,,,;,4,Consider reducing independent loads/stores accesses with 4K offsets. See the Optimization Manual for more details, -BE/Mem,,,,FB_Full,,,,,,,,,L1D_PEND_MISS.FB_FULL / CLKS,,,,,,,Load_Miss_Real_Latency * L1D_PEND_MISS.FB_FULL:c1 / CLKS,,Load_Miss_Real_Latency * L1D_PEND_MISS.REQUEST_FB_FULL:c1 / CLKS,,Load_Miss_Real_Latency * L1D_PEND_MISS.FB_FULL:c1 / CLKS,,,,Clocks_Calculated,This metric does a *rough estimation* of how often L1D Fill Buffer unavailability limited additional L1D miss memory access requests to proceed. The higher the metric value; the deeper the memory hierarchy level the misses are satisfied from (metric values >1 are valid). Often it hints on approaching bandwidth limits (to L2 cache; L3 cache or external memory).,> 0.3; $issueBW; $issueSL; $issueSmSt,4,MemoryBW,,pub/v3.1,;,4,See $issueBW and $issueSL hints. Avoid software prefetches if indeed memory BW limited., -BE/Mem,,,L2_Bound,,,,,( MEMORY_ACTIVITY.STALLS_L1D_MISS - MEMORY_ACTIVITY.STALLS_L2_MISS ) / CLKS,,,,,( #LOAD_L2_HIT / ( #LOAD_L2_HIT + L1D_PEND_MISS.FB_FULL_PERIODS ) ) * #L2_Bound_Ratio,,,,,( #LOAD_L2_HIT / ( #LOAD_L2_HIT + L1D_PEND_MISS.FB_FULL:c1 ) ) * #L2_Bound_Ratio,,( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CLKS,,,,( CYCLE_ACTIVITY.STALLS_L1D_PENDING - CYCLE_ACTIVITY.STALLS_L2_PENDING ) / CLKS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L2_HIT_PS : MEM_LOAD_RETIRED.L2_HIT_PS,Stalls,This metric estimates how often the CPU was stalled due to L2 cache accesses by loads. Avoiding cache misses (i.e. L1 misses/L2 hits) can improve the latency and increase performance.,> 0.05 & P,4,CacheMisses;MemoryBound;TmaL3mem,,pub/v3,;,3,, -BE/Mem,,,L3_Bound,,,,,( MEMORY_ACTIVITY.STALLS_L2_MISS - MEMORY_ACTIVITY.STALLS_L3_MISS ) / CLKS,,,,,,,,,,( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CLKS,,#Mem_L3_Hit_Fraction * CYCLE_ACTIVITY.STALLS_L2_MISS / CLKS,,,,,,#Mem_L3_Hit_Fraction * CYCLE_ACTIVITY.STALLS_L2_PENDING / CLKS,SNB/JKT/IVB/IVT ? MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L3_HIT_PS : MEM_LOAD_RETIRED.L3_HIT_PS,Stalls,This metric estimates how often the CPU was stalled due to loads accesses to L3 cache or contended with a sibling Core. Avoiding cache misses (i.e. L2 misses/L3 hits) can improve the latency and increase performance.,> 0.05 & P,3.3,CacheMisses;MemoryBound;TmaL3mem,,pub/v3,;,3,, -BE/Mem,,,,Contested_Accesses,,,,,,,,,,,,,,( ( #Mem_XSNP_HitM_Cost - #Mem_L2_Hit_Cost ) * #LOAD_XSNP_HITM + ( #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost ) * #LOAD_XSNP_MISS ) * #FB_Factor / CLKS,,,,,,( #Mem_XSNP_HitM_Cost * #LOAD_XSNP_HITM + #Mem_XSNP_Hit_Cost * #LOAD_XSNP_MISS ) / CLKS,,,SNB/JKT ? #NA : IVB/IVT ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS_PS : SKL/SKX/CFL/CLX/CPX/CNL/ICL/ICX/RKL ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS_PS : MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD;MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to contested accesses. Contested accesses occur when data written by one Logical Processor are read by another Logical Processor on a different Physical Core. Examples of contested accesses include synchronizations such as locks; true data sharing such as modified locked variables; and false sharing.,> 0.05 & P; $issueSyncxn,4.2,DataSharing;Offcore;Snoop,1,,;,4,, -BE/Mem,,,,Data_Sharing,,,,,,,,,,,,,,( #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost ) * #LOAD_XSNP_HIT * #FB_Factor / CLKS,,,,,,#Mem_XSNP_Hit_Cost * #LOAD_XSNP_HIT / CLKS,,,SNB/JKT ? #NA : IVB/IVT ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT_PS : SKL/SKX/CFL/CLX/CPX/CNL/ICL/ICX/RKL ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS : MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to data-sharing accesses. Data shared by multiple Logical Processors (even just read shared) may cause increased access latency due to cache coherency. Excessive data sharing can drastically harm multithreaded performance.,> 0.05 & P; $issueSyncxn,4.2,Offcore;Snoop,1,,;,4,, -BE/Mem,,,,L3_Hit_Latency,,,,,,,,,,,,,,( #Mem_XSNP_None_Cost - #Mem_L2_Hit_Cost ) * #LOAD_L3_HIT * #FB_Factor / CLKS,,,,,,#Mem_XSNP_None_Cost * #LOAD_L3_HIT / CLKS,,,SNB/JKT ? #NA : IVB/IVT ? MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L3_HIT_PS : MEM_LOAD_RETIRED.L3_HIT_PS,Clocks_Estimated,This metric represents fraction of cycles with demand load accesses that hit the L3 cache under unloaded scenarios (possibly L3 latency limited). Avoiding private cache misses (i.e. L2 misses/L3 hits) will improve the latency; reduce contention with sibling physical cores and increase performance. Note the value of this node may overlap with its siblings.,> 0.1 & P; $issueLat; ~overlap,4.2,MemoryLat,1,,;,4,, -BE/Mem,,,,SQ_Full,,,,( XQ.FULL_CYCLES + L1D_PEND_MISS.L2_STALLS ) / CLKS,,,,,L1D_PEND_MISS.L2_STALL / CLKS,,,,,,,,,,,#SQ_Full_Cycles / CORE_CLKS,,,,Clocks,This metric measures fraction of cycles where the Super Queue (SQ) was full taking into account all request-types and both hardware SMT threads (Logical Processors).,> 0.3 & P; $issueBW,4.3,MemoryBW;Offcore,,,,4,, -BE/Mem,,,DRAM_Bound,,,,,,,,,,,,( #MEM_Bound_Ratio - PMM_Bound ) if #PMM_App_Direct else #MEM_Bound_Ratio,,,#MEM_Bound_Ratio,,( 1 - #Mem_L3_Hit_Fraction ) * CYCLE_ACTIVITY.STALLS_L2_MISS / CLKS,,,,,,( 1 - #Mem_L3_Hit_Fraction ) * CYCLE_ACTIVITY.STALLS_L2_PENDING / CLKS,SNB ? MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS : IVB/IVT/JKT ? MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L3_MISS_PS : MEM_LOAD_RETIRED.L3_MISS_PS,Stalls,This metric estimates how often the CPU was stalled on accesses to external memory (DRAM) by loads. Better caching can improve the latency and increase performance.,> 0.1 & P,4.1,MemoryBound;TmaL3mem,1,pub/v3,;,3,, -BE/Mem,,,,MEM_Bandwidth,,,,,,,,,,,,,,,,,,,,,,#ORO_DRD_BW_Cycles / CLKS,,Clocks,This metric estimates fraction of cycles where the core's performance was likely hurt due to approaching bandwidth limits of external memory (DRAM). The underlying heuristic assumes that a similar off-core traffic is generated by all IA cores. This metric does not aggregate non-data-read requests by this logical processor; requests from other IA Logical Processors/Physical Cores/sockets; or other non-IA devices like GPU; hence the maximum external memory bandwidth limits may or may not be approached when this metric is flagged (see Uncore counters for that).,> 0.2 & P; $issueBW,4.1,MemoryBW;Offcore,,pub/v3,;,4,"Improve data accesses to reduce cacheline transfers from/to memory. Examples: 1) Consume all bytes of a each cacheline before it is evicted (e.g. reorder structure elements and split non-hot ones), 2) merge computed-limited with BW-limited loops, 3) NUMA optimizations in multi-socket system. Note: software prefetches will not help BW-limited application.",#Link: what is NUMA article -BE/Mem,,,,,MBA_Stalls,,INT_MISC.MBA_STALLS / CLKS,,,,,,,,,,,,,,,,,,,,,Clocks,This metric estimates fraction of cycles where the core's performance was likely hurt due to memory bandwidth Allocation feature (RDT's memory bandwidth throttling).,> 0.1 & P,4.4,MemoryBW;Offcore;Server,,,,5,, -BE/Mem,,,,MEM_Latency,,,,,,,,,,,,,,,,,,,,,,#ORO_DRD_Any_Cycles / CLKS - MEM_Bandwidth,,Clocks,This metric estimates fraction of cycles where the performance was likely hurt due to latency from external memory (DRAM). This metric does not aggregate requests from other Logical Processors/Physical Cores/sockets (see Uncore counters for that).,> 0.1 & P; $issueLat,3.1,MemoryLat;Offcore,,pub/v3,;,4,"Improve data accesses or interleave them with compute. Examples: 1) Data layout re-structuring, 2) Software Prefetches (also through the compiler).",#Link: Data re-layout; SW prefetching; AoS vs. SoA articles. -BE/Mem,,,,,Local_DRAM,,,,,,( #Mem_Local_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS * #FB_Factor / CLKS,,,,,,( #Mem_Local_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS * #FB_Factor / CLKS,,,,,,#Mem_Local_DRAM_Cost * #LOAD_LCL_MEM / CLKS,,,#NA,SNB/JKT/IVB/HSW/BDW/SKL/KBL/KBLR/CFL/CNL/ICL/TGL/RKL/ADL ? #NA : IVT ? MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS : HSX/BDX ? MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM_PS : MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling loads from local memory. Caching will improve the latency and increase performance.,> 0.1 & P,4.2,Server,1,,;,5,, -BE/Mem,,,,,Remote_DRAM,,,,,,( #Mem_Remote_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS * #FB_Factor / CLKS,,,,,,( #Mem_Remote_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS * #FB_Factor / CLKS,,,,,,#Mem_Remote_DRAM_Cost * #LOAD_RMT_MEM / CLKS,,,#NA,SNB/JKT/IVB/HSW/BDW/SKL/KBL/KBLR/CFL/CNL/ICL/TGL/RKL/ADL ? #NA : IVT ? MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM_PS : HSX/BDX ? MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM_PS : MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling loads from remote memory. This is caused often due to non-optimal NUMA allocations. #link to NUMA article,> 0.1 & P,4.2,Server;Snoop,1,,;,5,, -BE/Mem,,,,,Remote_Cache,,,,,,,,,,,,( ( #Mem_Remote_HitM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS + ( #Mem_Remote_Fwd_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS ) * #FB_Factor / CLKS,,,,,,( #Mem_Remote_HitM_Cost * #LOAD_RMT_HITM + #Mem_Remote_Fwd_Cost * #LOAD_RMT_FWD ) / CLKS,,,#NA,SNB/JKT/IVB/HSW/BDW/SKL/KBL/KBLR/CFL/CNL/ICL/TGL/RKL/ADL ? #NA : IVT ? MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD_PS : HSX/BDX ? MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD_PS : MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling loads from remote cache in other sockets including synchronizations issues. This is caused often due to non-optimal NUMA allocations. #link to NUMA article,> 0.05 & P; $issueSyncxn,4.2,Offcore;Server;Snoop,1,,;,5,, -BE/Mem,,,PMM_Bound,,,,,,,,,,,,( ( ( 1 - #Mem_DDR_Hit_Fraction ) * #MEM_Bound_Ratio ) if ( #OneMillion * ( MEM_LOAD_L3_MISS_RETIRED.REMOTE_PMM_PS + MEM_LOAD_RETIRED.LOCAL_PMM_PS ) > MEM_LOAD_RETIRED.L1_MISS_PS ) else 0 ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,Stalls,"This metric roughly estimates (based on idle latencies) how often the CPU was stalled on accesses to external 3D-Xpoint (Crystal Ridge, a.k.a. IXP) memory by loads, PMM stands for Persistent Memory Module. ",> 0.1 & P,3.5,MemoryBound;Server;TmaL3mem,1,pub/v3.5,;,3,Consider moving data-structure from AEP to DDR memory for better latency/bandwidth,#Link: Opt Guide CR section -BE/Mem,,,Store_Bound,,,,,,,,,EXE_ACTIVITY.BOUND_ON_STORES / CLKS,EXE_ACTIVITY.BOUND_ON_STORES:c1 / CLKS,,,,,EXE_ACTIVITY.BOUND_ON_STORES / CLKS,,,,,,,,RESOURCE_STALLS.SB / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.ALL_STORES_PS : MEM_INST_RETIRED.ALL_STORES_PS,Stalls,This metric estimates how often CPU was stalled due to RFO store memory accesses; RFO store issue a read-for-ownership request before the write. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should RFO stores be a bottleneck.,> 0.2 & P,4.2,MemoryBound;TmaL3mem,,pub/v3,;,3,, -BE/Mem,,,,Store_Latency,,,,,,,,,,,,,,,,,,,,( #Store_L2_Hit_Cycles + ( 1 - #Mem_Lock_St_Fraction ) * #ORO_Demand_RFO_C1 ) / CLKS,,#NA,,Clocks_Estimated,This metric estimates fraction of cycles the CPU spent handling L1D store misses. Store accesses usually less impact out-of-order core performance; however; holding resources for longer time can lead into undesired implications (e.g. contention on L1D fill-buffer entries - see FB_Full),> 0.1 & P; $issueRFO; $issueSL; ~overlap,3.3,MemoryLat;Offcore,1,,;,4,Consider to avoid/reduce unnecessary (or easily load-able/computable) memory store., -BE/Mem,,,,False_Sharing,,,,,,,,#Mem_XSNP_HitM_Cost * OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM / CLKS,,,,,( #Mem_Remote_HitM_Cost * #OCR_all_rfo_l3_miss_remote_hitm + #Mem_XSNP_HitM_Cost * #OCR_all_rfo_l3_hit_snoop_hitm ) / CLKS,#Mem_XSNP_HitM_Cost * #OCR_all_rfo_l3_hit_snoop_hitm / CLKS,( #Mem_Remote_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM + #Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE ) / CLKS,#Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM / CLKS,( #Mem_Remote_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM + #Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE ) / CLKS,#Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE / CLKS,( #Mem_Remote_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM + #Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE ) / CLKS,#Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE / CLKS,,,SNB/JKT ? #NA : IVB ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE : IVT ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE;OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM : HSW ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE : BDW ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM : HSX/BDX ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE;OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM : SKX ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE : CLX/CPX ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;OCR.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE : SKL/KBL/KBLR/CFL/CNL ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM : OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM,Clocks_Estimated,This metric roughly estimates how often CPU was handling synchronizations due to False Sharing. False Sharing is a multithreading hiccup; where multiple Logical Processors contend on different data-elements mapped into the same cache line. ,> 0.05 & P; $issueSyncxn,4.1,DataSharing;Offcore;Snoop,1,,;,4,False Sharing can be easily avoided by padding to make Logical Processors access different lines., -BE/Mem,,,,Split_Stores,,,,,,,,,,,,,,MEM_INST_RETIRED.SPLIT_STORES_PS / CORE_CLKS,,,,,,2 * MEM_UOPS_RETIRED.SPLIT_STORES_PS / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.SPLIT_STORES_PS : MEM_INST_RETIRED.SPLIT_STORES_PS,Core_Utilization,This metric represents rate of split store accesses. Consider aligning your data to the 64-byte cache line granularity.,> 0.2 & P; $issueSpSt,4.5,,,,;,4,, -BE/Mem,,,,Streaming_Stores,,,,,,,,9 * OCR.STREAMING_WR.ANY_RESPONSE / CLKS,,,,,,,,,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : OCR.STREAMING_WR.ANY_RESPONSE,Clocks_Estimated,This metric estimates how often CPU was stalled due to Streaming store memory accesses; Streaming store optimize out a read request required by RFO stores. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should Streaming stores be a bottleneck.,> 0.2 & P; $issueSmSt,4.2,MemoryBW;Offcore,1,,,4,, -BE/Mem,,,,DTLB_Store,,,,,,,,,,,,,,( #Mem_STLB_Hit_Cost * DTLB_STORE_MISSES.STLB_HIT:c1 + DTLB_STORE_MISSES.WALK_ACTIVE ) / CORE_CLKS,,( #Mem_STLB_Hit_Cost * DTLB_STORE_MISSES.STLB_HIT + DTLB_STORE_MISSES.WALK_DURATION:c1 + 7 * DTLB_STORE_MISSES.WALK_COMPLETED ) / CLKS,,,,( #Mem_STLB_Hit_Cost * DTLB_STORE_MISSES.STLB_HIT + DTLB_STORE_MISSES.WALK_DURATION ) / CLKS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.STLB_MISS_STORES_PS : MEM_INST_RETIRED.STLB_MISS_STORES_PS,Clocks_Estimated,This metric roughly estimates the fraction of cycles spent handling first-level data TLB store misses. As with ordinary data caching; focus on improving data locality and reducing working-set size to reduce DTLB overhead. Additionally; consider using profile-guided optimization (PGO) to collocate frequently-used data on the same page. Try using larger page sizes for large amounts of frequently-used data.,> 0.05 & P; $issueTLB,4.3,MemoryTLB,1,,;,4,, -BE/Mem,,,,,Store_STLB_Hit,,,,,,,,,,,,,DTLB_Store - Store_STLB_Miss,,,,,,,,#NA,,Clocks_Estimated,"This metric roughly estimates the fraction of cycles where the TLB was missed by store accesses, hitting in the second-level TLB (STLB)",> 0.05 & P,3.6,MemoryTLB,1,,,5,, -BE/Mem,,,,,Store_STLB_Miss,,,,,,,,,,,,,DTLB_STORE_MISSES.WALK_ACTIVE / CORE_CLKS,,,,,,,,#NA,,Clocks_Calculated,"This metric estimates the fraction of cycles where the STLB was missed by store accesses, performing a hardware page walk",> 0.05 & P,3.6,MemoryTLB,1,,,5,, -BE/Core,,Core_Bound,,,,,,,,,,"max( 0 , Backend_Bound - Memory_Bound )",,,,,,,,,,,,,,Backend_Bound - Memory_Bound,,Slots,This metric represents fraction of slots where Core non-memory issues were of a bottleneck. Shortage in hardware compute resources; or dependencies in software's instructions are both categorized under Core Bound. Hence it may indicate the machine ran out of an out-of-order resource; certain execution units are overloaded or dependencies in program's data- or instruction-flow are limiting the performance (e.g. FP-chained long-latency arithmetic operations).,> 0.1 & P,4.2,Backend;TmaL2;Compute,,pub/v3,;,2,Tip: consider Port Saturation analysis as next step., -BE/Core,,,Divider,,,,,ARITH.DIV_ACTIVE / CLKS,,,,,,,,,,ARITH.DIVIDER_ACTIVE / CLKS,,ARITH.FPU_DIV_ACTIVE / CORE_CLKS,,10 * ARITH.DIVIDER_UOPS / CORE_CLKS,,,,ARITH.FPU_DIV_ACTIVE / CORE_CLKS,? ARITH.DIV_ACTIVE : SNB/JKT/IVB/IVT/BDW/BDX ? ARITH.FPU_DIV_ACTIVE : HSW/HSX ? ARITH.DIVIDER_UOPS : ARITH.DIVIDER_ACTIVE,Clocks,This metric represents fraction of cycles where the Divider unit was active. Divide and square root instructions are performed by the Divider unit and can take considerably longer latency than integer or Floating Point addition; subtraction; or multiplication.,> 0.2 & P,4.5,,,pub/v3,;,3,, -BE/Core,,,Ports_Utilization,,,,,#Core_Bound_Cycles / CLKS if ( ARITH.DIV_ACTIVE < ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ) ) else #Few_Uops_Executed_Threshold / CLKS,,,,,,,,,,#Core_Bound_Cycles / CLKS if ( ARITH.DIVIDER_ACTIVE < ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ) ) else #Few_Uops_Executed_Threshold / CLKS,,( #Backend_Bound_Cycles - RESOURCE_STALLS.SB - CYCLE_ACTIVITY.STALLS_MEM_ANY ) / CLKS,,,,,,( #Backend_Bound_Cycles - RESOURCE_STALLS.SB - #STALLS_MEM_ANY ) / CLKS,,Clocks,This metric estimates fraction of cycles the CPU performance was potentially limited due to Core computation issues (non divider-related). Two distinct categories can be attributed into this metric: (1) heavy data-dependency among contiguous instructions would manifest in this metric - such cases are often referred to as low Instruction Level Parallelism (ILP). (2) Contention on some hardware execution unit other than Divider. For example; when there are too many multiply operations.,> 0.15 & P,4.5,PortsUtil,,pub/v3,;,3,Loop Vectorization -most compilers feature auto-Vectorization options today- reduces pressure on the execution ports as multiple elements are calculated with same uop., -BE/Core,,,,Ports_Utilized_0,,,,EXE_ACTIVITY.3_PORTS_UTIL:u0x80 / CLKS + Serializing_Operation * ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ) / CLKS,,,,EXE_ACTIVITY.3_PORTS_UTIL:u0x80 / CLKS + Serializing_Operation * ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ) / CLKS,,,,,,,,,,,,#Cycles_0_Ports_Utilized / CORE_CLKS,,#NA,,Clocks,"This metric represents fraction of cycles CPU executed no uops on any execution port (Logical Processor cycles since ICL, Physical Core cycles otherwise). Long-latency instructions like divides may contribute to this metric.",> 0.2 & P,4.4,PortsUtil,,,;,4,Check assembly view and Appendix C in Optimization Manual to find out instructions with say 5 or more cycles latency.,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -BE/Core,,,,,Serializing_Operation,,,,,,,,RESOURCE_STALLS.SCOREBOARD / CLKS,,,,,PARTIAL_RAT_STALLS.SCOREBOARD / CLKS,,,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : SKL/KBL/KBLR/CFL/SKX/CLX/CPX ? PARTIAL_RAT_STALLS.SCOREBOARD : RESOURCE_STALLS.SCOREBOARD,Clocks,This metric represents fraction of cycles the CPU issue-pipeline was stalled due to serializing operations. Instructions like CPUID; WRMSR or LFENCE serialize the out-of-order execution which may limit performance.,> 0.1 & P; $issueSO,4,PortsUtil,,pub/v3.4,;,3,, -BE/Core,,,,,,Slow_Pause,,CPU_CLK_UNHALTED.PAUSE / CLKS,,,37 * MISC_RETIRED.PAUSE_INST / CLKS,,140 * MISC_RETIRED.PAUSE_INST / CLKS,174 * ROB_MISC_EVENTS.PAUSE_INST / CLKS,40 * ROB_MISC_EVENTS.PAUSE_INST / CLKS,140 * ROB_MISC_EVENTS.PAUSE_INST / CLKS,,,,,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/SKX ? #NA : KBLR/CFL/CLX/CPX ? ROB_MISC_EVENTS.PAUSE_INST : CNL/ICL/ICX/RKL/TGL ? MISC_RETIRED.PAUSE_INST : CPU_CLK_UNHALTED.PAUSE_INST,Clocks,This metric represents fraction of cycles the CPU was stalled due to PAUSE Instructions.,> 0.05 & P,4.3,,,,;,6,, -BE/Core,,,,,,Memory_Fence,,13 * MISC2_RETIRED.LFENCE / CLKS,,,,,,,,,,,,,,,,,,,,Clocks,This metric represents fraction of cycles the CPU was stalled due to LFENCE Instructions.,> 0.05 & P,4.3,,1,,,6,, -BE/Core,,,,,Mixing_Vectors,,,160 * ASSISTS.SSE_AVX_MIX / CLKS,,,,,,,,,,UOPS_ISSUED.VECTOR_WIDTH_MISMATCH / UOPS_ISSUED.ANY,,,,,,,,#NA,,Clocks,The Mixing_Vectors metric gives the percentage of injected blend uops out of all uops issued. Usually a Mixing_Vectors over 5% is worth investigating. Read more in Appendix B1 of the Optimizations Guide for this topic.,> 0.05; $issueMV,4.5,,1,,,5,, -BE/Core,,,,,AMX_Busy,,EXE.AMX_BUSY / CORE_CLKS,,,,,,,,,,,,,,,,,,,,,Core_Clocks,This metric estimates fraction of cycles where the Advanced Matrix Extensions (AMX) execution engine was busy with tile (arithmetic) operations,> 0.5 & P,4.4,Compute;HPC;Server,,,,5,, -BE/Core,,,,Ports_Utilized_1,,,,,,,,EXE_ACTIVITY.1_PORTS_UTIL / CLKS,,,,,,,,,,,,#Cycles_1_Port_Utilized / CORE_CLKS,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : EXE_ACTIVITY.1_PORTS_UTIL,Clocks,"This metric represents fraction of cycles where the CPU executed total of 1 uop per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). This can be due to heavy data-dependency among software instructions; or over oversubscribing a particular hardware resource. In some other cases with high 1_Port_Utilized and L1_Bound; this metric can point to L1 data-cache latency bottleneck that may not necessarily manifest with complete execution starvation (due to the short L1 latency e.g. walking a linked list) - looking at the assembly can be helpful.",> 0.2 & P; $issueL1,4,PortsUtil,,,;,4,, -BE/Core,,,,Ports_Utilized_2,,,,,,,,EXE_ACTIVITY.2_PORTS_UTIL / CLKS,,,,,,,,,,,,#Cycles_2_Ports_Utilized / CORE_CLKS,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : EXE_ACTIVITY.2_PORTS_UTIL,Clocks,"This metric represents fraction of cycles CPU executed total of 2 uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). Loop Vectorization -most compilers feature auto-Vectorization options today- reduces pressure on the execution ports as multiple elements are calculated with same uop.",> 0.15 & P; $issue2P,4.2,PortsUtil,,,;,4,, -BE/Core,,,,Ports_Utilized_3m,,,,,,,,UOPS_EXECUTED.CYCLES_GE_3 / CLKS,,,,,,,,,,,,#Cycles_3m_Ports_Utilized / CORE_CLKS,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : UOPS_EXECUTED.CYCLES_GE_3,Clocks,"This metric represents fraction of cycles CPU executed total of 3 or more uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise).",> 0.7 & P,4,PortsUtil,,,;,4,, -BE/Core,,,,,ALU_Op_Utilization,,,( UOPS_DISPATCHED.PORT_0 + UOPS_DISPATCHED.PORT_1 + UOPS_DISPATCHED.PORT_5_11 + UOPS_DISPATCHED.PORT_6 ) / ( 5 * CORE_CLKS ),,,,( UOPS_DISPATCHED.PORT_0 + UOPS_DISPATCHED.PORT_1 + UOPS_DISPATCHED.PORT_5 + UOPS_DISPATCHED.PORT_6 ) / ( 4 * CORE_CLKS ),,,,,,,,,,( UOPS_DISPATCHED_PORT.PORT_0 + UOPS_DISPATCHED_PORT.PORT_1 + UOPS_DISPATCHED_PORT.PORT_5 + UOPS_DISPATCHED_PORT.PORT_6 ) / ( 4 * CORE_CLKS ),,( UOPS_DISPATCHED_PORT.PORT_0 + UOPS_DISPATCHED_PORT.PORT_1 + UOPS_DISPATCHED_PORT.PORT_5 ) / ( 3 * CORE_CLKS ),,,,Core_Execution,This metric represents Core fraction of cycles CPU dispatched uops on execution ports for ALU operations.,> 0.6,4.3,,,,,5,, -BE/Core,,,,,,Port_0,,,,,,UOPS_DISPATCHED.PORT_0 / CORE_CLKS,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_0 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_0 : UOPS_DISPATCHED.PORT_0,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 0 ([SNB+] ALU; [HSW+] ALU and 2nd branch),> 0.6; $issue2P,4.2,Compute,,,,6,, -BE/Core,,,,,,Port_1,,,,,,UOPS_DISPATCHED.PORT_1 / CORE_CLKS,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_1 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_1 : UOPS_DISPATCHED.PORT_1,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 1 (ALU),> 0.6; $issue2P,4.2,,,,,6,, -BE/Core,,,,,,Port_5,,#NA,,,,UOPS_DISPATCHED.PORT_5 / CORE_CLKS,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_5 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_5 : ICL/ICX/TGL/RKL ? UOPS_DISPATCHED.PORT_5 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 5 ([SNB+] Branches and ALU; [HSW+] ALU),> 0.6; $issue2P,4.2,,,,,6,See section 'Handling Port 5 Pressure' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -BE/Core,,,,,,Port_6,,,,,,UOPS_DISPATCHED.PORT_6 / CORE_CLKS,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_6 / CORE_CLKS,,,,#NA,SNB/JKT/IVB/IVT ? #NA : HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_6 : UOPS_DISPATCHED.PORT_6,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 6 ([HSW+]Primary Branch and simple ALU),> 0.6; $issue2P,4.2,,,,,6,, -BE/Core,,,,,Load_Op_Utilization,,,UOPS_DISPATCHED.PORT_2_3_10 / ( 3 * CORE_CLKS ),,,,UOPS_DISPATCHED.PORT_2_3 / ( 2 * CORE_CLKS ),,,,,,,,,,( UOPS_DISPATCHED_PORT.PORT_2 + UOPS_DISPATCHED_PORT.PORT_3 + UOPS_DISPATCHED_PORT.PORT_7 - UOPS_DISPATCHED_PORT.PORT_4 ) / ( 2 * CORE_CLKS ),,( UOPS_DISPATCHED_PORT.PORT_2 + UOPS_DISPATCHED_PORT.PORT_3 - UOPS_DISPATCHED_PORT.PORT_4 ) / ( 2 * CORE_CLKS ),,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : ICL/ICX/TGL/RKL ? UOPS_DISPATCHED.PORT_2_3 : UOPS_DISPATCHED.PORT_2_3_10,Core_Execution,This metric represents Core fraction of cycles CPU dispatched uops on execution port for Load operations,> 0.6,4.3,,,,,5,, -BE/Core,,,,,,Port_2,,,,,,#NA,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_2 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_2 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 2 ([SNB+]Loads and Store-address; [ICL+] Loads),> 0.6,3.4,,,,,6,, -BE/Core,,,,,,Port_3,,,,,,#NA,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_3 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_3 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 3 ([SNB+]Loads and Store-address; [ICL+] Loads),> 0.6,3.4,,,,,6,, -BE/Core,,,,,Store_Op_Utilization,,,,,,,( UOPS_DISPATCHED.PORT_4_9 + UOPS_DISPATCHED.PORT_7_8 ) / ( 4 * CORE_CLKS ),,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_4 / CORE_CLKS,,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : UOPS_DISPATCHED.PORT_7_8,Core_Execution,This metric represents Core fraction of cycles CPU dispatched uops on execution port for Store operations,> 0.6,4.1,,,,,5,, -BE/Core,,,,,,Port_4,,,,,,#NA,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_4 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_4 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 4 (Store-data),> 0.6; $issueSpSt,3.4,,,,,6,, -BE/Core,,,,,,Port_7,,,,,,#NA,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_7 / CORE_CLKS,,,,#NA,SNB/JKT/IVB/IVT ? #NA : HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_7 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 7 ([HSW+]simple Store-address),> 0.6,3.4,,,,,6,, -RET,Retiring,,,,,,,,,,,PERF_METRICS.RETIRING / #PERF_METRICS_SUM,,,,,,,,,,,,,,#Retired_Slots / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_RETIRED.RETIRE_SLOTS : UOPS_RETIRED.SLOTS,Slots,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. ,(> 0.7 | Heavy_Operations),4.3,TmaL1,,pub/v3,;perf,1,A high Retiring value for non-vectorized code may be a good hint for programmer to consider vectorizing his code. Doing so essentially lets more computations be done without significantly increasing number of instructions thus improving the performance., -RET,,Light_Operations,,,,,,,,,,"max( 0 , Retiring - Heavy_Operations )",,,,,,,,,,,,,,Retiring - Heavy_Operations,INST_RETIRED.PREC_DIST,Slots,This metric represents fraction of slots where the CPU was retiring light-weight operations -- instructions that require no more than one uop (micro-operation). This correlates with total number of instructions used by the program. A uops-per-instruction (see UopPI metric) ratio of 1 or less should be expected for decently optimized software running on Intel Core/Xeon products. While this often indicates efficient X86 instructions were executed; high value does not necessarily mean better performance cannot be achieved.,> 0.6,4.3,Retire;TmaL2,,pub/v3,;,2,Focus on techniques that reduce instruction count or result in more efficient instructions generation such as vectorization, #Link: auto-Vectorization options of Intel/other compilers. -RET,,,FP_Arith,,,,X87_Use + FP_Scalar + FP_Vector + FP_AMX,,,,,,,,,,,,,X87_Use + FP_Scalar + FP_Vector,,#NA,,,,X87_Use + FP_Scalar + FP_Vector,,Uops,"This metric represents overall arithmetic floating-point (FP) operations fraction the CPU has executed (retired). Note this metric's value may exceed its parent due to use of ""Uops"" CountDomain and FMA double-counting.",> 0.2 & P,4.4,HPC,,pub/v3,;,3,, -RET,,,,X87_Use,,,,,,,,,,,,,,Retiring * UOPS_EXECUTED.X87 / UOPS_EXECUTED.THREAD,,,,INST_RETIRED.X87 * UopPI / #Retired_Slots,,#Retired_Slots * FP_COMP_OPS_EXE.X87 / UOPS_EXECUTED.THREAD,,#Retired_Slots * FP_COMP_OPS_EXE.X87 / UOPS_DISPATCHED.THREAD,,Uops,This metric serves as an approximation of legacy x87 usage. It accounts for instructions beyond X87 FP arithmetic operations; hence may be used as a thermometer to avoid X87 high usage and preferably upgrade to modern ISA. See Tip under Tuning Hint.,> 0.1 & P,4.3,Compute,,,;,4,Tip: consider compiler flags to generate newer AVX (or SSE) instruction sets; which typically perform better and feature vectors., -RET,,,,FP_Scalar,,,,,,,,,,,,,,,,#FP_Arith_Scalar / #Retired_Slots,,#NA,,#FP_Arith_Scalar / UOPS_EXECUTED.THREAD,,#FP_Arith_Scalar / UOPS_DISPATCHED.THREAD,,Uops,This metric approximates arithmetic floating-point (FP) scalar uops fraction the CPU has retired. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.5,Compute;Flops,,pub/v3,;,4,Investigate what limits (compiler) generation of vector code., -RET,,,,FP_Vector,,,,,,,,,,,,,,,,#FP_Arith_Vector / #Retired_Slots,,#NA,,#FP_Arith_Vector / UOPS_EXECUTED.THREAD,,#FP_Arith_Vector / UOPS_DISPATCHED.THREAD,,Uops,This metric approximates arithmetic floating-point (FP) vector uops fraction the CPU has retired aggregated across all vector widths. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.5,Compute;Flops,1,pub/v3,;,4,Check if vector width is expected , -RET,,,,,FP_Vector_128b,,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128B_PACKED_HALF ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ) / #Retired_Slots,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128BIT_PACKED_BF16 ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ) / #Retired_Slots,,,,,,,,Uops,This metric approximates arithmetic FP vector uops fraction the CPU has retired for 128-bit wide vectors. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.4,Compute;Flops,1,,,5,Try to exploit wider vector length, -RET,,,,,FP_Vector_256b,,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256B_PACKED_HALF ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / #Retired_Slots,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256BIT_PACKED_BF16 ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / #Retired_Slots,,,,,,,,Uops,This metric approximates arithmetic FP vector uops fraction the CPU has retired for 256-bit wide vectors. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.4,Compute;Flops,1,,,5,Try to exploit wider vector length, -RET,,,,,FP_Vector_512b,,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512B_PACKED_HALF ) / #Retired_Slots,#NA,,,,,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / #Retired_Slots,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512BIT_PACKED_BF16 ) / #Retired_Slots,,,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / #Retired_Slots,,,,,,,,,#NA,,Uops,This metric approximates arithmetic FP vector uops fraction the CPU has retired for 512-bit wide vectors. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.4,Compute;Flops,1,,,5,, -RET,,,,FP_AMX,,,AMX_OPS_RETIRED.BF16:c1 / #Retired_Slots if #FP16 else #NA,,,,,,,,,,,,,,,,,,,,,Uops_Estimated,"This metric approximates arithmetic floating-point (FP) matrix uops fraction the CPU has retired (aggregated across all supported FP datatypes in AMX engine). Refer to AMX_Busy and GFLOPs metrics for actual AMX utilization and FP performance, resp.",> 0.1 & P,4.5,Compute;Flops;HPC;Pipeline;Server,,,,4,, -RET,,,Int_Operations,,,,Int_Vector_128b + Int_Vector_256b + Shuffles + Int_AMX ,Int_Vector_128b + Int_Vector_256b + Shuffles,,,,,,,,,,,,,,,,,,,,Uops,"This metric represents overall Integer (Int) select operations fraction the CPU has executed (retired). Vector/Matrix Int operations and shuffles are counted. Note this metric's value may exceed its parent due to use of ""Uops"" CountDomain.",> 0.1 & P,4.5,Pipeline,,,,3,, -RET,,,,Int_Vector_128b,,,,( INT_VEC_RETIRED.ADD_128 + INT_VEC_RETIRED.VNNI_128 ) / #Retired_Slots,,,,,,,,,,,,,,,,,,,,Uops,This metric represents 128-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired.,> 0.1 & P; $issue2P,4.4,Compute;IntVector;Pipeline,,,,3,, -RET,,,,Int_Vector_256b,,,,( INT_VEC_RETIRED.ADD_256 + INT_VEC_RETIRED.MUL_256 + INT_VEC_RETIRED.VNNI_256 ) / #Retired_Slots,,,,,,,,,,,,,,,,,,,,Uops,This metric represents 256-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired.,> 0.1 & P; $issue2P,4.4,Compute;IntVector;Pipeline,,,,3,, -RET,,,,Int_AMX,,,AMX_OPS_RETIRED.INT8:c1 / #Retired_Slots if #FP16 else #NA,,,,,,,,,,,,,,,,,,,,,Uops_Estimated,"This metric approximates arithmetic Integer (Int) matrix uops fraction the CPU has retired (aggregated across all supported Int datatypes in AMX engine). Refer to AMX_Busy and TIOPs metrics for actual AMX utilization and Int performance, resp.",> 0.1 & P,4.5,Compute;HPC;IntVector;Pipeline;Server,,,,3,, -RET,,,,Shuffles,,,,INT_VEC_RETIRED.SHUFFLES / #Retired_Slots,,,,,,,,,,,,,,,,,,,,Uops,"This metric represents Shuffle (cross ""vector lane"" data transfers) uops fraction the CPU has retired.",> 0.1 & P,4.4,HPC;Pipeline,,,,3,, -RET,,,Memory_Operations,,,,,Light_Operations * MEM_UOP_RETIRED.ANY / #Retired_Slots,,,,,,,,,,Light_Operations * MEM_INST_RETIRED.ANY / INST_RETIRED.ANY,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring memory operations -- uops for memory load or store accesses.,> 0.1 & P,4.4,Pipeline,,pub/v4.4,,3,, -RET,,,Fused_Instructions,,,,,Light_Operations * INST_RETIRED.MACRO_FUSED / #Retired_Slots,,,,,#NA,,,,,Light_Operations * UOPS_RETIRED.MACRO_FUSED / #Retired_Slots,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring fused instructions -- where one uop can represent multiple contiguous instructions. The instruction pairs of CMP+JCC or DEC+JCC are commonly used examples.,> 0.1 & P,4.3,Pipeline,,,,3,See section 'Optimizing for Macro-fusion' in Optimization Manual:, -RET,,,Non_Fused_Branches,,,,,Light_Operations * ( BR_INST_RETIRED.ALL_BRANCHES - INST_RETIRED.MACRO_FUSED ) / #Retired_Slots,,,,,#NA,,,,,Light_Operations * ( BR_INST_RETIRED.ALL_BRANCHES - UOPS_RETIRED.MACRO_FUSED ) / #Retired_Slots,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring branch instructions that were not fused. Non-conditional branches like direct JMP or CALL would count here. Can be used to examine fusible conditional jumps that were not fused.,> 0.1 & P,4.3,Pipeline,,,,3,, -RET,,,Branch_Instructions,,,,,#NA,,,,,Light_Operations * BR_INST_RETIRED.ALL_BRANCHES / #Retired_Slots,,,,,#NA,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring branch instructions.,> 0.1 & P,4.3,Pipeline,,,,3,, -RET,,,Nop_Instructions,,,,,,,,,,,,,,,Light_Operations * INST_RETIRED.NOP / #Retired_Slots,,,,,,,,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : INST_RETIRED.NOP,Slots,This metric represents fraction of slots where the CPU was retiring NOP (no op) instructions. Compilers often use NOPs for certain address alignments - e.g. start address of a function or loop body.,> 0.1 & P,4.3,Pipeline,,pub/v4.3,,3,Improve Codegen by correctly placing NOPs outside hot sections (e.g. outside loop body)., -RET,,,Other_Light_Ops,,,,,,,,,,,,,,,"max( 0 , Light_Operations - #Light_Ops_Sum )",,,,,,,,#NA,,Slots,This metric represents the remaining light uops fraction the CPU has executed - remaining means not covered by other sibling nodes. May undercount due to FMA double counting,> 0.3 & P,4.4,Pipeline,,pub/v3,;,3,, -RET,,Heavy_Operations,,,,,,PERF_METRICS.HEAVY_OPERATIONS / #PERF_METRICS_SUM,,,,,Microcode_Sequencer + Retiring * ( UOPS_DECODED.DEC0 - UOPS_DECODED.DEC0:c1 ) / IDQ.MITE_UOPS,,,,,( #Retired_Slots + UOPS_RETIRED.MACRO_FUSED - INST_RETIRED.ANY ) / SLOTS,,,,,,,,Microcode_Sequencer,ADL/SPR ? UOPS_RETIRED.HEAVY : #NA,Slots,This metric represents fraction of slots where the CPU was retiring heavy-weight operations -- instructions that require two or more uops or micro-coded sequences. This highly-correlates with the uop length of these instructions/sequences.,> 0.1,4.3,Retire;TmaL2,,pub/v4.1,,2,, -RET,,,Few_Uops_Instructions,,,,,"max( 0 , Heavy_Operations - Microcode_Sequencer )",,,,,,,,,,Heavy_Operations - Microcode_Sequencer,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring instructions that that are decoder into two or up to ([SNB+] four; [ADL+] five) uops. This highly-correlates with the number of uops in such instructions.,> 0.05 & P; $issueD0,4.5,,,,,3,, -RET,,,Microcode_Sequencer,,,,,UOPS_RETIRED.MS / SLOTS,,,,,,,,,,,,,,,,,,#Retire_Fraction * IDQ.MS_UOPS / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL/ICL/ICX/TGL/RKL ? IDQ.MS_UOPS : UOPS_RETIRED.MS,Slots,This metric represents fraction of slots the CPU was retiring uops fetched by the Microcode Sequencer (MS) unit. The MS is used for CISC instructions not supported by the default decoders (like repeat move strings; or CPUID); or by microcode assists used to address some operation modes (like in Floating Point assists). These cases can often be avoided.,> 0.05 & P; $issueMC; $issueMS,4.5,MicroSeq,,pub/v3,;,3,, #Link: repeat move strings -RET,,,,Assists,,,,#Avg_Assist_Cost * ASSISTS.ANY:u0x1B / SLOTS,,,,,#Avg_Assist_Cost * ASSISTS.ANY / SLOTS,,,,,#Avg_Assist_Cost * ( FP_ASSIST.ANY + OTHER_ASSISTS.ANY ) / SLOTS,,,,,,#Avg_Assist_Cost * OTHER_ASSISTS.ANY_WB_ASSIST / SLOTS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? OTHER_ASSISTS.ANY_WB_ASSIST : SKL/KBL/KBLR/CFL/SKX/CLX/CPX ? OTHER_ASSISTS.ANY : ASSISTS.ANY,Slots_Estimated,This metric estimates fraction of slots the CPU retired uops delivered by the Microcode_Sequencer as a result of Assists. Assists are long sequences of uops that are required in certain corner-cases for operations that cannot be handled natively by the execution pipeline. For example; when working with very small floating point values (so-called Denormals); the FP units are not set up to perform these operations natively. Instead; a sequence of instructions to perform the computation on the Denormals is injected into the pipeline. Since these microcode sequences might be dozens of uops long; Assists can be extremely deleterious to performance and they can be avoided in many cases.,> 0.1 & P,4.4,,1,,,4,, -RET,,,,,Page_Faults,,,99 * ASSISTS.PAGE_FAULT / SLOTS,,,,,,,,,,,,,,,,,,,,Slots_Estimated,This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Page Faults. A Page Fault may apply on first application access to a memory page. Note operating system handling of page faults accounts for the majority of its cost.,> 0.05,4.4,,,,,5,, -RET,,,,,FP_Assists,,,30 * ASSISTS.FP / SLOTS,,,,,,,,,,,,,,,,,,,,Slots_Estimated,This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Floating Point (FP) Assists. FP Assist may apply when working with very small floating point values (so-called Denormals).,> 0.1,4.4,HPC,,,,5,Consider enabling the DAZ (Denormals Are Zero) and/or FTZ (Flush To Zero) options in your compiler to flush denormals to zero. This option may improve performance if the denormal values are not critical in your application. Also note that the DAZ and FTZ modes are not compatible with the IEEE Standard 754.,https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/reference/cpu-metrics-reference/bad-speculation-back-end-bound-pipeline-slots/fp-assists.html -RET,,,,,AVX_Assists,,,63 * ASSISTS.SSE_AVX_MIX / SLOTS,,,,,,,,,,,,,,,,,,,,Slots_Estimated,This metric estimates fraction of slots the CPU retired uops as a result of handing SSE to AVX* or AVX* to SSE transition Assists. ,> 0.1,4.4,HPC,,,,5,, -RET,,,,CISC,,,,,,,,,,,,,,,,,,,,"max( 0 , Microcode_Sequencer - Assists )",,#NA,ADL/SPR ? FRONTEND_RETIRED.MS_FLOWS : #NA,Slots,This metric estimates fraction of cycles the CPU retired uops originated from CISC (complex instruction set computer) instruction. A CISC instruction has multiple uops that are required to perform the instruction's functionality as in the case of read-modify-write as an example. Since these instructions require multiple uops they may or may not imply sub-optimal use of machine resources.,> 0.1 & P,4.4,,,,,4,, -.,metrics,,,,,,,,,,,,,,,,,,,,,,,,,,,-,-,,2.5,,,pub/v3,;,-,, -Info.Bottleneck,Mispredictions,,,,,,,,,,,,,,,,,100 * ( Branch_Mispredicts + Fetch_Latency * Mispredicts_Resteers / ##Fetch_Latency ),,,,,,,,,,Scaled_Slots,Total pipeline cost of Branch Misprediction related bottlenecks,> 20; $issueBM,4.3,Bad;BadSpec;BrMispredicts,,pub/v4.3,;EDP;perf,0,, -Info.Bottleneck,Memory_Bandwidth,,,,,,,,,,,,,,,,,100 * Memory_Bound * ( ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Bandwidth / ##DRAM_Bound ) + ( L3_Bound / ##Memory_Bound ) * ( SQ_Full / ##L3_Bound ) ) + ( L1_Bound / ##Memory_Bound ) * ( FB_Full / ##L1_Bound ) ,,,,,,,,,,Scaled_Slots,Total pipeline cost of (external) Memory Bandwidth related bottlenecks,> 20; $issueBW,4.3,Mem;MemoryBW;Offcore,,,,0,, -Info.Bottleneck,Memory_Latency,,,,,,,,,,,,,,,,,100 * Memory_Bound * ( ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Latency / ##DRAM_Bound ) + ( L3_Bound / ##Memory_Bound ) * ( L3_Hit_Latency / ##L3_Bound ) + ( L2_Bound / ##Memory_Bound ) ),,,,,,,,,,Scaled_Slots,Total pipeline cost of Memory Latency related bottlenecks (external memory and off-core caches),> 20; $issueLat,4.3,Mem;MemoryLat;Offcore,,,,0,, -Info.Bottleneck,Memory_Data_TLBs,,,,,,,,,,,,,,,,,"100 * Memory_Bound * ( ( L1_Bound / max( Memory_Bound , ##Memory_Bound ) ) * ( DTLB_Load / max( L1_Bound , ##L1_Bound ) ) + ( Store_Bound / ##Memory_Bound ) * ( DTLB_Store / ##Store_Bound ) ) ",,,,,,,,,,Scaled_Slots,Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs),> 20; $issueTLB,4.3,Mem;MemoryTLB;Offcore,,,,0,, -Info.Bottleneck,Branching_Overhead,,,,,,,,,,,,,,,,,100 * #Branching_Retired,,,,,,,,,,Scaled_Slots,Total pipeline cost of branch related instructions (used for program control-flow including function calls),> 10; $issueBC,4.3,Ret,,,,0,, -Info.Bottleneck,Big_Code,,,,,,,,,,,,,,,,,100 * Fetch_Latency * ( ITLB_Misses + ICache_Misses + Unknown_Branches ) / ##Fetch_Latency,,,,,,,,,,Scaled_Slots,Total pipeline cost of instruction fetch related bottlenecks by large code footprint programs (i-side cache; TLB and BTB misses),> 20; $issueBC,4.5,BigFoot;Fed;Frontend;IcMiss;MemoryTLB,,pub/v4.3,;EDP;perf,0,, -Info.Bottleneck,Instruction_Fetch_BW,,,,,,,,,,,,,,,,,100 * ( Frontend_Bound - Fetch_Latency * Mispredicts_Resteers / ##Fetch_Latency ) - Big_Code,,,,,,,,,,Scaled_Slots,Total pipeline cost of instruction fetch bandwidth related bottlenecks,> 20,4.5,Fed;FetchBW;Frontend,,pub/v4.3,;EDP;perf,0,, -Info.Thread,IPC,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / CLKS,,Metric,Instructions Per Cycle (per Logical Processor),,4.3,Ret;Summary,#Pipeline_Width + 2,pub/v3,;EDP;perf,i,, -Info.Thread,UopPI,,,,,,,,,,,,,,,,,,,,,,,,,#Retired_Slots / INST_RETIRED.ANY,,Metric,Uops Per Instruction,> 1.05,4.5,Pipeline;Ret;Retire,2,pub/v3,;EDP;perf,4,, -Info.Thread,UpTB,,,,,,,,,,,,,,,,,,,,,,,#Retired_Slots / BR_INST_RETIRED.NEAR_TAKEN,,,,Metric,Instruction per taken branch,< #Pipeline_Width * 1.5,4.3,Branches;Fed;FetchBW,,,;perf,i,, -Info.Thread,CPI,,,,,,,,,,,,,,,,,,,,,,,,,1 / IPC,,Metric,Cycles Per Instruction (per Logical Processor),,2.7,Pipeline;Mem,,pub/v3,;EDP;perf;VTune,i,, -Info.Thread,CLKS,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD,,Count,Per-Logical Processor actual clocks when the Logical Processor is active.,,4.2,Pipeline,,pub/v3,;EDP;perf,1,, -Info.Thread,SLOTS,,,,,,,,,,,TOPDOWN.SLOTS:perf_metrics,,,,,,,,,,,,,,#Pipeline_Width * CORE_CLKS,,Count,Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward),,4.3,TmaL1,,pub/v3,;EDP;perf,1,, -Info.Thread,Slots_Utilization,,,,,,,,,,,SLOTS / ( TOPDOWN.SLOTS:percore / 2 ) if #SMT_on else 1,,,,,,,,,,,,,,#NA,,Metric,Fraction of Physical Core issue-slots utilized by this Logical Processor,,4.1,SMT;TmaL1,1,,,i,, -Info.Thread,Execute_per_Issue,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY,,#NA,,UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY,,UOPS_DISPATCHED.THREAD / UOPS_ISSUED.ANY,,Metric,"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.",,4.3,Cor;Pipeline,,,,,, -Info.Core,CoreIPC,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / CORE_CLKS,,Core_Metric,Instructions Per Cycle across hyper-threads (per physical core),,4.3,Ret;SMT;TmaL1,#Pipeline_Width + 2,pub/v3,;EDP;perf,1,, -Info.Core,FLOPc,,,,,,,,,,,,,,,,,,,#FLOP_Count / CORE_CLKS,,#NA,,,,#FLOP_Count / CORE_CLKS,,Core_Metric,Floating Point Operations Per Cycle,,4.5,Ret;Flops,10,pub/v3,;perf,i,, -Info.Core,FP_Arith_Utilization,,,,,,,( FP_ARITH_DISPATCHED.PORT_0 + FP_ARITH_DISPATCHED.PORT_1 + FP_ARITH_DISPATCHED.PORT_5 ) / ( 2 * CORE_CLKS ),,,,,,,,,,,,( #FP_Arith_Scalar + #FP_Arith_Vector ) / ( 2 * CORE_CLKS ),,,,,,#NA,,Core_Metric,Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width). Values > 1 are possible due to ([BDW+] Fused-Multiply Add (FMA) counting - common; [ADL+] use all of ADD/MUL/FMA in Scalar or 128/256-bit vectors - less common).,,4.4,Cor;Flops;HPC,2,,;EDP,i,, -Info.Core,ILP,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / #Execute_Cycles,,( UOPS_EXECUTED.CORE / 2 / #Execute_Cycles ) if #SMT_on else UOPS_EXECUTED.CORE / #Execute_Cycles,,UOPS_EXECUTED.THREAD / #Execute_Cycles,,UOPS_DISPATCHED.THREAD / #Execute_Cycles,,Core_Metric,Instruction-Level-Parallelism (average number of uops executed when there is execution) per-core,,4.4,Backend;Cor;Pipeline;PortsUtil,#Exe_Ports,pub/v3,;EDP;perf,i,, -Info.Botlnk.L0,Core_Bound_Likely,,,,,,,,,,,,,,,,,100 * ( 1 - Core_Bound / Ports_Utilization if Core_Bound < Ports_Utilization else 1 ) if SMT_2T_Utilization > 0.5 else #NA,,,,,,,,,,Metric,Probability of Core Bound bottleneck hidden by SMT-profiling artifacts,> 0.5,4.5,Cor;SMT,1,,,,Tip: consider analysis with SMT disabled, -Info.Core,CORE_CLKS,,,,,,,,,,,CPU_CLK_UNHALTED.DISTRIBUTED,CPU_CLK_UNHALTED.CORE,,,,,,,,,,,,,( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ) if #EBS_Mode else ( CPU_CLK_UNHALTED.THREAD_ANY / 2 ) if #SMT_on else CLKS,,Count,Core actual clocks when any Logical Processor is active on the Physical Core,,4.1,SMT,,pub/v3,;perf,1,, -Info.Inst_Mix,IpLoad,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_LOADS_PS,,,,,,INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS_PS,,,,Inst_Metric,Instructions per Load (lower number means higher occurrence rate),< 3,3.3,InsType,,pub/v3.2,;perf,i,, -Info.Inst_Mix,IpStore,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_STORES_PS,,,,,,INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES_PS,,,,Inst_Metric,Instructions per Store (lower number means higher occurrence rate),< 8,3.2,InsType,,pub/v3.2,;perf,i,, -Info.Inst_Mix,IpBranch,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES,,,,Inst_Metric,Instructions per Branch (lower number means higher occurrence rate),< 8,3.2,Branches;Fed;InsType,,pub/v3.2,;perf,i,, -Info.Inst_Mix,IpCall,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL,,,,Inst_Metric,Instructions per (near) call (lower number means higher occurrence rate),< 200,3.2,Branches;Fed;PGO,,pub/v3.4,;perf,i,, -Info.Inst_Mix,IpTB,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN,,,,Inst_Metric,Instruction per taken branch,< #Pipeline_Width * 2 + 1; $issueFB,4.5,Branches;Fed;FetchBW;Frontend;PGO,,pub/v3.2,;EDP;perf,i,, -Info.Inst_Mix,BpTkBranch,,,,,,,,,,,,,,,,,,,,,,,BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN,,,,Metric,Branch instructions per taken branch. ,,4,Branches;Fed;PGO,,pub/v3.2,;perf,i,Can be used to approximate PGO-likelihood for non-loopy codes., -Info.Inst_Mix,IpFLOP,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / #FLOP_Count,,,,,,,,Inst_Metric,Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate),< 10,4.5,Flops;InsType,,pub/v4,;perf,i,Reference: Tuning Performance via Metrics with Expectations,https://doi.org/10.1109/LCA.2019.2916408 -Info.Inst_Mix,IpArith,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / ( #FP_Arith_Scalar + #FP_Arith_Vector ),,#NA,,1 / ( FP_Scalar + FP_Vector ),,,,Inst_Metric,Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). May undercount due to FMA double counting. Approximated prior to BDW.,< 10,4.3,Flops;InsType,,,,i,, -Info.Inst_Mix,IpArith_Scalar_SP,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE,,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting.,< 10,4.3,Flops;FpScalar;InsType,,,,i,, -Info.Inst_Mix,IpArith_Scalar_DP,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE,,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting.,< 10,4.3,Flops;FpScalar;InsType,,,,i,, -Info.Inst_Mix,IpArith_AVX128,,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128B_PACKED_HALF ),,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ),,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128BIT_PACKED_BF16 ),,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ),,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting.,< 10,4.4,Flops;FpVector;InsType,,,,i,, -Info.Inst_Mix,IpArith_AVX256,,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256B_PACKED_HALF ),,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ),,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256BIT_PACKED_BF16 ),,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ),,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting.,< 10,4.4,Flops;FpVector;InsType,,,,i,, -Info.Inst_Mix,IpArith_AVX512,,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512B_PACKED_HALF ),#NA,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ),INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512BIT_PACKED_BF16 ),,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ),,,,,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic AVX 512-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting.,< 10,4.4,Flops;FpVector;InsType,,,,i,, -Info.Inst_Mix,IpArith_AMX_F16,,,,,,INST_RETIRED.ANY / AMX_OPS_RETIRED.BF16,,,,,,,,,,,,,,,,,,,,,Inst_Metric,Instructions per FP Arithmetic AMX operation (lower number means higher occurrence rate). Operations factored per matrices' sizes of the AMX instructions.,< 10,4.4,Flops;FpVector;InsType;Server,,,;EDP;perf,,, -Info.Inst_Mix,IpArith_AMX_Int8,,,,,,INST_RETIRED.ANY / AMX_OPS_RETIRED.INT8,,,,,,,,,,,,,,,,,,,,,Inst_Metric,Instructions per Integer Arithmetic AMX operation (lower number means higher occurrence rate). Operations factored per matrices' sizes of the AMX instructions.,< 10,4.4,IntVector;InsType;Server,,,;EDP;perf,,, -Info.Inst_Mix,IpSWPF,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / SW_PREFETCH_ACCESS.T0:u0xF,,,,,,,,,,Inst_Metric,Instructions per Software prefetch instruction (of any type: NTA/T0/T1/T2/Prefetch) (lower number means higher occurrence rate),< 100,4.4,Prefetches,1000,,,i,, -Info.Inst_Mix,Instructions,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY,INST_RETIRED.PREC_DIST,Count,Total number of retired Instructions,,4,Summary;TmaL1,,pub/v3.2,;perf,1,, -Info.Pipeline,Retire,,,,,,,,,,,#Retired_Slots / UOPS_RETIRED.SLOTS:c1,,,,,,,,,,,,,,#Retired_Slots / UOPS_RETIRED.RETIRE_SLOTS:c1,,Metric,Average number of Uops retired in cycles where at least one uop has retired.,,4.4,Pipeline;Ret,,,,,, -Info.Pipeline,Strings_Cycles,,,,,,,INST_RETIRED.REP_ITERATION / UOPS_RETIRED.SLOTS:c1,,,,,,,,,,,,,,,,,,,,Metric,Estimated fraction of retirement-cycles dealing with repeat instructions,> 0.1,4.4,Pipeline;Ret,,,;EDP;perf,3,, -Info.Pipeline,IpAssist,,,,,,,INST_RETIRED.ANY / ASSISTS.ANY:u0x1B,,,,,,,,,,,,,,,,,,,,Inst_Metric,Instructions per a microcode Assist invocation. See Assists tree node for details (lower number means higher occurrence rate),< 100000,4.4,Pipeline;Ret;Retire,,,,,, -Info.Pipeline,Execute,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / UOPS_EXECUTED.THREAD:c1,,#NA,,UOPS_EXECUTED.THREAD / UOPS_EXECUTED.THREAD:c1,,,,Metric,Instruction-Level-Parallelism (average number of uops executed when there is execution) per-thread,,4.4,Cor;Pipeline;PortsUtil;SMT,#Exe_Ports,,,i,, -Info.Frontend,Fetch_UpC,,,,,,,,,,,,,,,,,UOPS_ISSUED.ANY / UOPS_ISSUED.ANY:c1,,,,,,,,,,Metric,Average number of Uops issued by front-end when it issued something,,4.3,Fed;FetchBW,6,pub/v4.5,,,, -Info.Frontend,LSD_Coverage,,,,,,#NA,,,,#NA,,,,#NA,LSD.UOPS / #Fetched_Uops,,,,,,,,,,#NA,,Metric,Fraction of Uops delivered by the LSD (Loop Stream Detector; aka Loop Cache),,4.5,Fed;LSD,1,pub/v4,;perf,i,, -Info.Frontend,DSB_Coverage,,,,,,,,,,,,,,,,,,,,,,,,,IDQ.DSB_UOPS / #Fetched_Uops,,Metric,Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache),< 0.7 & #HighIPC; $issueFB,4.5,DSB;Fed;FetchBW,1,pub/v3,;perf;vtune,i,See section 'Decoded ICache' in Optimization Manual,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html -Info.Frontend,DSB_Switch_Cost,,,,,,,,,,,,DSB2MITE_SWITCHES.PENALTY_CYCLES / DSB2MITE_SWITCHES.PENALTY_CYCLES:c1:e1,,,,,DSB2MITE_SWITCHES.PENALTY_CYCLES / DSB2MITE_SWITCHES.COUNT,,,,,,,,,,Metric,Average number of cycles of a switch from the DSB fetch-unit to MITE fetch unit - see DSB_Switches tree node for details.,,4.4,DSBmiss,,,,,, -Info.Botlnk.L2,DSB_Misses,,,,,,,,,,,,,,,,,100 * ( Fetch_Latency * DSB_Switches / ##Fetch_Latency + Fetch_Bandwidth * MITE / ##Fetch_Bandwidth ),,,,,,,,,,Scaled_Slots,Total pipeline cost of DSB (uop cache) misses - subset of the Instruction_Fetch_BW Bottleneck.,> 10; $issueFB,4.5,DSBmiss;Fed,,pub/v4.3,;EDP;perf;VTune,3,, -Info.Frontend,ICache_Miss_Latency,,,,,,,ICACHE_DATA.STALLS / ICACHE_DATA.STALLS:c1:e1,,,,,ICACHE_16B.IFDATA_STALL / ICACHE_16B.IFDATA_STALL:c1:e1,,,,,ICACHE_16B.IFDATA_STALL / ICACHE_16B.IFDATA_STALL:c1:e1 + 2,,,,,,,,,,Metric,Average Latency for L1 instruction cache misses,,4.5,Fed;FetchLat;IcMiss,,,,3,, -Info.Botlnk.L2,IC_Misses,,,,,,,,,,,,,,,,,100 * ( Fetch_Latency * ICache_Misses / ##Fetch_Latency ),,,,,,,,,,Scaled_Slots,Total pipeline cost of Instruction Cache misses - subset of the Big_Code Bottleneck.,> 5; $issueFL,4.5,Fed;FetchLat;IcMiss,,,,3,, -Info.Frontend,IpDSB_Miss_Ret,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / FRONTEND_RETIRED.ANY_DSB_MISS,,,,,,,,,,Inst_Metric,Instructions per non-speculative DSB miss (lower number means higher occurrence rate),< 50,4.3,DSBmiss;Fed,,,;EDP;perf,3,, -Info.Frontend,IpUnknown_Branch,,,,,,,,,,,,,,,,,,,,,,,Instructions / BACLEARS.ANY,,,,Metric,Instructions per speculative Unknown Branch Misprediction (BAClear) (lower number means higher occurrence rate),,4.5,Fed,,,EDP,i,, -Info.Frontend,L2MPKI_Code,,,,,,,,,,,,,,,,,1000 * FRONTEND_RETIRED.L2_MISS / INST_RETIRED.ANY,,,,,,,,,,Metric,L2 cache true code cacheline misses per kilo instruction ,,4.5,IcMiss,,,,i,, -Info.Frontend,L2MPKI_Code_All,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.CODE_RD_MISS / INST_RETIRED.ANY,,,,,,,,,,Metric,L2 cache speculative code cacheline misses per kilo instruction ,,4.5,IcMiss,,,,i,, -Info.Bad_Spec,IpMispredict,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES,,,,Inst_Metric,Number of Instructions per non-speculative Branch Misprediction (JEClear) (lower number means higher occurrence rate),< 200,4.4,Bad;BadSpec;BrMispredicts,,pub/v3.4,;perf,i,, -Info.Bad_Spec,IpMisp_Cond_Ntaken,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.COND_NTAKEN,,,,,,,,,,,,,,,,Inst_Metric,Instructions per retired mispredicts for conditional non-taken branches (lower number means higher occurrence rate).,< 200,4.5,Bad;BrMispredicts,,,,,, -Info.Bad_Spec,IpMisp_Cond_Taken,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.COND_TAKEN,,,,,,,,,,,,,,,,Inst_Metric,Instructions per retired mispredicts for conditional taken branches (lower number means higher occurrence rate).,< 200,4.5,Bad;BrMispredicts,,,,,, -Info.Bad_Spec,IpMisp_Ret,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.RET,,,,,,,,,,,,,,,,Inst_Metric,Instructions per retired mispredicts for return branches (lower number means higher occurrence rate).,< 500,4.5,Bad;BrMispredicts,,,,,, -Info.Bad_Spec,IpMisp_Indirect,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.INDIRECT,BR_MISP_RETIRED.INDIRECT_CALL:u0x80 / BR_MISP_RETIRED.INDIRECT,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.INDIRECT,,,,,,,,,,,Instructions / ( #Retire_Fraction * BR_MISP_EXEC.ALL_BRANCHES:u0xE4 ),,,,Inst_Metric,Instructions per retired mispredicts for indirect CALL or JMP branches (lower number means higher occurrence rate).,< 1000,4.5,Bad;BrMispredicts,,,,i,, -Info.Bad_Spec,Branch_Misprediction_Cost,,,,,,,,,,,,,,,,,,, ( Branch_Mispredicts + Fetch_Latency * Mispredicts_Resteers / ##Fetch_Latency ) * SLOTS / BR_MISP_RETIRED.ALL_BRANCHES,,,,,,#NA,,Core_Metric,Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear),; $issueBM,4.4,Bad;BrMispredicts,300,pub/v3.4,;perf,i,, -Info.Branches,Cond_NT,,,,,,,,,,,BR_INST_RETIRED.COND_NTAKEN / BR_INST_RETIRED.ALL_BRANCHES,,,,,,BR_INST_RETIRED.NOT_TAKEN / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are non-taken conditionals,,4.3,Bad;Branches;CodeGen;PGO,1,,,i,, -Info.Branches,Cond_TK,,,,,,,,,,,BR_INST_RETIRED.COND_TAKEN / BR_INST_RETIRED.ALL_BRANCHES,,,,,,( BR_INST_RETIRED.CONDITIONAL_PS - BR_INST_RETIRED.NOT_TAKEN ) / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are taken conditionals,,4.3,Bad;Branches;CodeGen;PGO,1,,,i,, -Info.Branches,CallRet,,,,,,,,,,,,,,,,,( BR_INST_RETIRED.NEAR_CALL + BR_INST_RETIRED.NEAR_RETURN ) / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are CALL or RET,,4.3,Bad;Branches,1,,,i,, -Info.Branches,Jump,,,,,,,,,,,,,,,,,#Br_DoI_Jumps / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are unconditional (direct or indirect) jumps,,4.3,Bad;Branches,1,,,i,, -Info.Branches,Other_Branches,,,,,,,,,,,1 - ( Cond_NT + Cond_TK + CallRet + Jump ),,,,,,,,,,,,,,,,Fraction,Fraction of branches of other types (not individually covered by other metrics in Info.Branches group),,4.3,Bad;Branches,1,,,i,, -Info.Memory,Load_Miss_Real_Latency,,,,,,,L1D_PEND_MISS.PENDING / MEM_LOAD_COMPLETED.L1_MISS_ANY,,,,,,,,,,L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS_PS + MEM_LOAD_RETIRED.FB_HIT_PS ),,,,,,L1D_PEND_MISS.PENDING / ( MEM_LOAD_UOPS_RETIRED.L1_MISS + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS ),,#NA,,Clocks_Latency,Actual Average Latency for L1 data-cache miss demand load operations (in core cycles),,4.4,Mem;MemoryBound;MemoryLat,1000,pub/v3.1,;EDP;perf,3,, -Info.Memory,MLP,,,,,,,,,,,,,,,,,,,,,,,L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES,,#NA,,Metric,Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor),,3.4,Mem;MemoryBound;MemoryBW,10,pub/v3.3,;EDP;perf,i,, -Info.Memory,L1MPKI,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.L1_MISS_PS / INST_RETIRED.ANY,,,,,,1000 * MEM_LOAD_UOPS_RETIRED.L1_MISS / INST_RETIRED.ANY,,#NA,,Metric,L1 cache true misses per kilo instruction for retired demand loads,,3.3,Mem;CacheMisses,,pub/v3.3,;perf,i,, -Info.Memory,L1MPKI_Load,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.ALL_DEMAND_DATA_RD / INST_RETIRED.ANY,,,,,,,,#NA,,Metric,L1 cache true misses per kilo instruction for all demand loads (including speculative),,4.1,Mem;CacheMisses,,,,i,, -Info.Memory,L2MPKI,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.L2_MISS_PS / INST_RETIRED.ANY,,,,,,1000 * MEM_LOAD_UOPS_RETIRED.L2_MISS / INST_RETIRED.ANY,,#NA,,Metric,L2 cache true misses per kilo instruction for retired demand loads,,3.3,Mem;Backend;CacheMisses,,pub/v3.3,;perf,i,, -Info.Memory,L2MPKI_All,,,,,,,,,1000 * L2_RQSTS.MISS / INST_RETIRED.ANY,,1000 * ( ( OFFCORE_REQUESTS.ALL_DATA_RD - OFFCORE_REQUESTS.DEMAND_DATA_RD ) + L2_RQSTS.ALL_DEMAND_MISS + L2_RQSTS.SWPF_MISS ) / Instructions,,,,,,,,1000 * L2_RQSTS.MISS / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache ([RKL+] true) misses per kilo instruction for all request types (including speculative),,4.4,Mem;CacheMisses;Offcore,,pub/v3.5,;perf,i,, -Info.Memory,L2MPKI_Load,,,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache ([RKL+] true) misses per kilo instruction for all demand loads (including speculative),,4.4,Mem;CacheMisses,,,;,i,, -Info.Memory,L2HPKI_All,,,,,,,,,1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY,,,#NA,,,,,,,1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache hits per kilo instruction for all request types (including speculative),,4.1,Mem;CacheMisses,,pub/v3.5,;perf,i,, -Info.Memory,L2HPKI_Load,,,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache hits per kilo instruction for all demand loads (including speculative),,3.5,Mem;CacheMisses,,,;,i,, -Info.Memory,L3MPKI,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.L3_MISS_PS / INST_RETIRED.ANY,,,,1000 * MEM_LOAD_UOPS_RETIRED.L3_MISS_PS / INST_RETIRED.ANY,,1000 * MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS / INST_RETIRED.ANY,,#NA,,Metric,L3 cache true misses per kilo instruction for retired demand loads,,3.3,Mem;CacheMisses,,pub/v3.3,;perf,i,, -Info.Memory,FB_HPKI,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.FB_HIT_PS / INST_RETIRED.ANY,,,,,,,,#NA,,Metric,Fill Buffer (FB) hits per kilo instructions for retired demand loads (L1D misses that merge into ongoing miss-handling entries),,4.4,Mem;CacheMisses,,,,i,, -Info.Memory.TLB,Page_Walks_Utilization,,,,,,,( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING ) / ( 4 * CORE_CLKS ),,,,,( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING ) / ( 2 * CORE_CLKS ),,,,,( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * CORE_CLKS ),( ITLB_MISSES.WALK_DURATION + DTLB_LOAD_MISSES.WALK_DURATION + DTLB_STORE_MISSES.WALK_DURATION + 7 * ( DTLB_STORE_MISSES.WALK_COMPLETED + DTLB_LOAD_MISSES.WALK_COMPLETED + ITLB_MISSES.WALK_COMPLETED ) ) / ( 2 * CORE_CLKS ),( ITLB_MISSES.WALK_DURATION:c1 + DTLB_LOAD_MISSES.WALK_DURATION:c1 + DTLB_STORE_MISSES.WALK_DURATION:c1 + 7 * ( DTLB_STORE_MISSES.WALK_COMPLETED + DTLB_LOAD_MISSES.WALK_COMPLETED + ITLB_MISSES.WALK_COMPLETED ) ) / CORE_CLKS,,,,( ITLB_MISSES.WALK_DURATION + DTLB_LOAD_MISSES.WALK_DURATION + DTLB_STORE_MISSES.WALK_DURATION ) / CORE_CLKS,,#NA,,Core_Metric,Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses,> 0.5,4.3,Mem;MemoryTLB,1,pub/v3.2,;perf,i,, -Info.Memory.TLB,Code_STLB_MPKI,,,,,,,,,,,,,,,,,1000 * ITLB_MISSES.WALK_COMPLETED / INST_RETIRED.ANY,,,,,,,,,,Metric,STLB (2nd level TLB) code speculative misses per kilo instruction (misses of any page-size that complete the page walk),,4.5,Fed;MemoryTLB,,,,,, -Info.Memory.TLB,Load_STLB_MPKI,,,,,,,,,,,,,,,,,1000 * DTLB_LOAD_MISSES.WALK_COMPLETED / INST_RETIRED.ANY,,,,,,,,,,Metric,STLB (2nd level TLB) data load speculative misses per kilo instruction (misses of any page-size that complete the page walk),,4.5,Mem;MemoryTLB,,,,,, -Info.Memory.TLB,Store_STLB_MPKI,,,,,,,,,,,,,,,,,1000 * DTLB_STORE_MISSES.WALK_COMPLETED / INST_RETIRED.ANY,,,,,,,,,,Metric,STLB (2nd level TLB) data store speculative misses per kilo instruction (misses of any page-size that complete the page walk),,4.5,Mem;MemoryTLB,,,,,, -Info.Memory.Core,L1D_Cache_Fill_BW,,,,,,,,,,,,,,,,,,,,,,,64 * L1D.REPLACEMENT / #OneBillion / Time,,#NA,,Core_Metric,Average per-core data fill bandwidth to the L1 data cache [GB / sec],,4.4,Mem;MemoryBW,,,,i,, -Info.Memory.Core,L2_Cache_Fill_BW,,,,,,,,,,,,,,,,,,,,,,,64 * L2_LINES_IN.ALL / #OneBillion / Time,,#NA,,Core_Metric,Average per-core data fill bandwidth to the L2 cache [GB / sec],,4.4,Mem;MemoryBW,,,,i,, -Info.Memory.Core,L3_Cache_Fill_BW,,,,,,,,,,,,,,,,,,,,,,,64 * LONGEST_LAT_CACHE.MISS / #OneBillion / Time,,#NA,,Core_Metric,Average per-core data fill bandwidth to the L3 cache [GB / sec],,4.4,Mem;MemoryBW,,,,i,, -Info.Memory.Core,L3_Cache_Access_BW,,,,,,,,,,,,,,,,,64 * OFFCORE_REQUESTS.ALL_REQUESTS / #OneBillion / Time,,,,,,,,#NA,,Core_Metric,Average per-core data access bandwidth to the L3 cache [GB / sec],,4.4,Mem;MemoryBW;Offcore,,,,i,, -Info.Memory.Core,L2_Evictions_Silent_PKI,,,,,,,,,,,,,,,,1000 * L2_LINES_OUT.SILENT / Instructions,,,,,,,,,#NA,,Core_Metric,Rate of silent evictions from the L2 cache per Kilo instruction where the evicted lines are dropped (no writeback to L3 or memory),,4.4,L2Evicts;Mem;Server,,pub/v3.6,;perf,i,, -Info.Memory.Core,L2_Evictions_NonSilent_PKI,,,,,,,,,,,,,,,,1000 * L2_LINES_OUT.NON_SILENT / Instructions,,,,,,,,,#NA,,Core_Metric,Rate of non silent evictions from the L2 cache per Kilo instruction,,4.4,L2Evicts;Mem;Server,,pub/v3.6,;perf,i,, -Info.Memory.Thread,L1D_Cache_Fill_BW_1T,,,,,,,,,,,,,,,,,,,,,,,L1D_Cache_Fill_BW,,#NA,,Metric,Average per-thread data fill bandwidth to the L1 data cache [GB / sec],,4.4,Mem;MemoryBW,,,;perf,i,, -Info.Memory.Thread,L2_Cache_Fill_BW_1T,,,,,,,,,,,,,,,,,,,,,,,L2_Cache_Fill_BW,,#NA,,Metric,Average per-thread data fill bandwidth to the L2 cache [GB / sec],,4.4,Mem;MemoryBW,,,;perf,i,, -Info.Memory.Thread,L3_Cache_Fill_BW_1T,,,,,,,,,,,,,,,,,,,,,,,L3_Cache_Fill_BW,,#NA,,Metric,Average per-thread data fill bandwidth to the L3 cache [GB / sec],,4.4,Mem;MemoryBW,,,;perf,i,, -Info.Memory.Thread,L3_Cache_Access_BW_1T,,,,,,,,,,,,,,,,,,,,,,,L3_Cache_Access_BW,,#NA,,Metric,Average per-thread data access bandwidth to the L3 cache [GB / sec],,4.4,Mem;MemoryBW;Offcore,,,;perf,i,, -Info.Memory.ORO,Load_L2_Miss_Latency,,,,,,,,,,,,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS.DEMAND_DATA_RD,,,,Clocks_Latency,Average Latency for L2 cache miss demand Loads,,4.5,Memory_Lat;Offcore,1000,,;EDP,,, -Info.Memory.ORO,Load_L3_Miss_Latency,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.L3_MISS_DEMAND_DATA_RD / OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD:u0x10 / OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD,,,,,,,,,,,,,,,,Clocks_Latency,Average Latency for L3 cache miss demand Loads,,4.5,Memory_Lat;Offcore,1000,,;EDP,,, -Info.Memory.ORO,Load_L2_MLP,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD:c1,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD,,,,Metric,Average Parallel L2 cache miss demand Loads,,4.5,Memory_BW;Offcore,100,,,,, -Info.Memory.ORO,Data_L2_MLP,,,,,,,,,,,,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD,,,,Metric,Average Parallel L2 cache miss data reads,,4.5,Memory_BW;Offcore,100,,,,, -Info.System,CPU_Utilization,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.REF_TSC / TSC,,Metric,Average CPU Utilization,,2.5,HPC;Summary,200,pub/v3,;perf,i,, -Info.System,Average_Frequency,,,,,,,,,,,,,,,,,,,,,,,,,Turbo_Utilization * TSC / #OneBillion / Time,,SystemMetric,Measured Average Frequency for unhalted processors [GHz],,4.2,Summary;Power,,pub/v3.4,;perf,i,, -Info.System,GFLOPs,,,,,,,,,,,,,,,,,,,( #FLOP_Count / #OneBillion ) / Time,,#NA,,,,( #FLOP_Count / #OneBillion ) / Time,,Metric,"Giga Floating Point Operations Per Second. Aggregate across all supported options of: FP precisions, scalar and vector instructions, vector-width and AMX engine.",,4.5,Cor;Flops;HPC,200,pub/v3,;EDP;perf,i,, -Info.System,TIOPS,,,,,,( 8 * AMX_OPS_RETIRED.INT8 / 1e12 ) / Time,,,,,,,,,,,,,,,,,,,,,Metric,Tera Integer (matrix) Operations Per Second,,4.4,Cor;HPC;IntVector;Server,,,;EDP;perf,,, -Info.System,Turbo_Utilization,,,,,,,,,,,,,,,,,,,,,,,,,CLKS / CPU_CLK_UNHALTED.REF_TSC,,Core_Metric,Average Frequency Utilization relative nominal frequency,,3,Power,10,pub/v3,;perf,i,, -Info.System,Power_License0_Utilization,,,,,,,#NA,,,,,CORE_POWER.LVL0_TURBO_LICENSE / CORE_CLKS,,,,CORE_POWER.LVL0_TURBO_LICENSE / 2 / CORE_CLKS if #SMT_on else CORE_POWER.LVL0_TURBO_LICENSE / CORE_CLKS,,,,,,,,,#NA,,Core_Metric,"Fraction of Core cycles where the core was running with power-delivery for baseline license level 0. This includes non-AVX codes, SSE, AVX 128-bit, and low-current AVX 256-bit codes.",,4.3,Power,1,,;,i,, -Info.System,Power_License1_Utilization,,,,,,,#NA,,,,,CORE_POWER.LVL1_TURBO_LICENSE / CORE_CLKS,,,,CORE_POWER.LVL1_TURBO_LICENSE / 2 / CORE_CLKS if #SMT_on else CORE_POWER.LVL1_TURBO_LICENSE / CORE_CLKS,,,,,,,,,#NA,,Core_Metric,Fraction of Core cycles where the core was running with power-delivery for license level 1. This includes high current AVX 256-bit instructions as well as low current AVX 512-bit instructions.,> 0.5,4.3,Power,1,,;,i,, -Info.System,Power_License2_Utilization,,,,,,,#NA,,,,,CORE_POWER.LVL2_TURBO_LICENSE / CORE_CLKS,,,,CORE_POWER.LVL2_TURBO_LICENSE / 2 / CORE_CLKS if #SMT_on else CORE_POWER.LVL2_TURBO_LICENSE / CORE_CLKS,,,,,,,,,#NA,,Core_Metric,Fraction of Core cycles where the core was running with power-delivery for license level 2 (introduced in SKX). This includes high current AVX 512-bit instructions.,> 0.5,4.3,Power,1,,;,i,, -Info.System,SMT_2T_Utilization,,,,,,,,,,,1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_DISTRIBUTED if #SMT_on else 0,1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_CORE if #SMT_on else 0,,,,,,,,,,,,,1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0,,Core_Metric,Fraction of cycles where both hardware Logical Processors were active,,4.1,SMT,1,pub/v3,;EDP,i,, -Info.System,Kernel_Utilization,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD_P:SUP / CPU_CLK_UNHALTED.THREAD,,Metric,Fraction of cycles spent in the Operating System (OS) Kernel mode,> 0.05,4.2,OS,1,pub/v3,;perf,i,, -Info.System,Kernel_CPI,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD_P:SUP / INST_RETIRED.ANY_P:SUP,,Metric,Cycles Per Instruction for the Operating System (OS) Kernel mode,,4.3,OS,,pub/v4.3,;perf,i,, -Info.System,DRAM_BW_Use,,,,,,,,,,,,,,,,,,,,,,,,( 64 * ( UNC_M_CAS_COUNT.RD + UNC_M_CAS_COUNT.WR ) / #OneBillion ) / Time,64 * ( UNC_ARB_TRK_REQUESTS.ALL + UNC_ARB_COH_TRK_REQUESTS.ALL ) / #OneMillion / Time / 1000,,GB/sec,Average external Memory Bandwidth Use for reads and writes [GB / sec],; $issueBW,4.1,HPC;Mem;MemoryBW;SoC,200,pub/v3,;perf,i,, -Info.System,MEM_Request_Latency,,,,,,#NA,,,( UNC_ARB_TRK_OCCUPANCY.ALL + UNC_ARB_DAT_OCCUPANCY.RD ) / UNC_ARB_TRK_REQUESTS.ALL,,,#NA,,,,,,,,,,,,#NA,UNC_ARB_TRK_OCCUPANCY.ALL / UNC_ARB_TRK_REQUESTS.ALL,,Clocks_Latency,Average latency of all requests to external memory (in Uncore cycles),,4.5,Mem;SoC,1000,,,i,, -Info.System,MEM_Parallel_Requests,,,,,,#NA,,,,,,#NA,,,,,,,,,,,,#NA,UNC_ARB_TRK_OCCUPANCY.ALL / UNC_ARB_TRK_OCCUPANCY.CYCLES_WITH_ANY_REQUEST,,Metric,Average number of parallel requests to external memory. Accounts for all requests,,4.5,Mem;SoC,100,,,i,, -Info.System,MEM_Read_Latency,,,,,,#OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD ) / ( Socket_CLKS / Time ),,,( UNC_ARB_TRK_OCCUPANCY.RD + UNC_ARB_DAT_OCCUPANCY.RD ) / UNC_ARB_TRK_REQUESTS.RD,#OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD ) / ( Socket_CLKS / Time ),,#NA,,,,#OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD ) / ( Socket_CLKS / Time ),#OneBillion * ( UNC_ARB_TRK_OCCUPANCY.DATA_READ / UNC_ARB_TRK_REQUESTS.DATA_READ ) / ( Socket_CLKS / Time ),,,#OneBillion * ( UNC_C_TOR_OCCUPANCY.MISS_OPCODE:opc=0x182 / UNC_C_TOR_INSERTS.MISS_OPCODE:opc=0x182 ) / ( Socket_CLKS / Time ),,,,"#OneBillion * ( ""UNC_C_TOR_OCCUPANCY.MISS_OPCODE/Match=0x182"" / ""UNC_C_TOR_INSERTS.MISS_OPCODE/Match=0x182"" ) / ( Socket_CLKS / Time )",#NA,,NanoSeconds,Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches. ([RKL+]memory-controller only),,4.5,Mem;MemoryLat;SoC,1000,pub/v3.4,;perf,i,, -Info.System,MEM_Parallel_Reads,,,,,,UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD:c1,,,UNC_ARB_DAT_OCCUPANCY.RD / UNC_ARB_DAT_OCCUPANCY.RD:c1,UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD:c1,,#NA,,,,UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD:c1,UNC_ARB_TRK_OCCUPANCY.DATA_READ / UNC_ARB_TRK_OCCUPANCY.DATA_READ:c1,,,UNC_C_TOR_OCCUPANCY.MISS_OPCODE:opc=0x182 / UNC_C_TOR_OCCUPANCY.MISS_OPCODE:opc=0x182:c1,,,,"""UNC_C_TOR_OCCUPANCY.MISS_OPCODE/Match=0x182"" / ""UNC_C_TOR_OCCUPANCY.MISS_OPCODE/Match=0x182:c1""",#NA,,SystemMetric,Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches,,4.5,Mem;MemoryBW;SoC,100,pub/v3.4,;perf,i,, -Info.System,MEM_PMM_Read_Latency,,,,,,,,,,( #OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_PMM / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PMM ) / UNC_CHA_CLOCKTICKS:one_unit ) if #PMM_App_Direct else #NA,,,,( #OneBillion * ( UNC_M_PMM_RPQ_OCCUPANCY.ALL / UNC_M_PMM_RPQ_INSERTS ) / UNC_M_CLOCKTICKS:one_unit ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,NanoSeconds,Average latency of data read request to external 3D X-Point memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches,,4.2,Mem;MemoryLat;SoC;Server,,pub/v3.5,;perf,i,, -Info.System,MEM_DRAM_Read_Latency,,,,,,,,,, #OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_DDR / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_DDR ) / UNC_CHA_CLOCKTICKS:one_unit,,,,,,#OneBillion * ( UNC_M_RPQ_OCCUPANCY / UNC_M_RPQ_INSERTS ) / UNC_M_CLOCKTICKS:one_unit,,,,,,,,,#NA,,NanoSeconds,Average latency of data read request to external DRAM memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches,,4.2,Mem;MemoryLat;SoC;Server,,,;,i,, -Info.System,PMM_Read_BW,,,,,,,,,,,,,,( ( 64 * UNC_M_PMM_RPQ_INSERTS / #OneBillion ) / Time ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,GB/sec,Average 3DXP Memory Bandwidth Use for reads [GB / sec],,4,Mem;MemoryBW;SoC;Server,,pub/v3.5,;perf,i,, -Info.System,PMM_Write_BW,,,,,,,,,,,,,,( ( 64 * UNC_M_PMM_WPQ_INSERTS / #OneBillion ) / Time ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,GB/sec,Average 3DXP Memory Bandwidth Use for Writes [GB / sec],,4,Mem;MemoryBW;SoC;Server,,pub/v3.5,;perf,i,, -Info.System,IO_Write_BW,,,,,,,,,,UNC_CHA_TOR_INSERTS.IO_PCIRDCUR * 64 / #OneBillion / Time,,,,,,( UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART0 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART1 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART2 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART3 ) * 4 / #OneBillion / Time,,,,,,,,,,,GB/sec,Average IO (network or disk) Bandwidth Use for Writes [GB / sec],,4,IoBW;Mem;SoC;Server,,pub/v4,;perf,i,, -Info.System,IO_Read_BW,,,,,,#NA,,,,( UNC_CHA_TOR_INSERTS.IO_HIT_ITOM + UNC_CHA_TOR_INSERTS.IO_MISS_ITOM + UNC_CHA_TOR_INSERTS.IO_HIT_ITOMCACHENEAR + UNC_CHA_TOR_INSERTS.IO_MISS_ITOMCACHENEAR ) * 64 / #OneBillion / Time,,,,,,( UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART0 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART1 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART2 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART3 ) * 4 / #OneBillion / Time,,,,,,,,,,,GB/sec,Average IO (network or disk) Bandwidth Use for Reads [GB / sec],,4,IoBW;Mem;SoC;Server,,pub/v4,;perf,i,, -Info.System,UPI_Data_Transmit_BW,,,,,,UNC_UPI_TxL_FLITS.ALL_DATA * 64 / 9 / 1000000,,,,,,,,,,,,,,,,,,,,,MB/sec,Cross-socket Ultra Path Interconnect (UPI) data transmit bandwidth for data only [MB / sec],,4.5,SoC;Server,,,;EDP,,, -Info.System,Power,,,,,,,,,,,,,,,,,,,,( FREERUN_PKG_ENERGY_STATUS * #Energy_Unit + 15.6 * FREERUN_DRAM_ENERGY_STATUS ) / ( #DurationTimeInSeconds * #OneMillion ),UNC_PKG_ENERGY_STATUS * #Energy_Unit / ( Time * #OneMillion ),( FREERUN_PKG_ENERGY_STATUS + FREERUN_DRAM_ENERGY_STATUS ) * #Energy_Unit / ( #DurationTimeInSeconds * #OneMillion ),UNC_PKG_ENERGY_STATUS * #Energy_Unit / ( Time * #OneMillion ),,#NA,,SystemMetric,Total package Power in Watts,,2.9,Power;SoC,200,pub/v3.2,;,i,, -Info.System,Time,,,,,,,,,,,,,,,,,,,,,,,,,#DurationTimeInSeconds,,Seconds,Run duration time in seconds,< 1,4,Summary,,pub/v3,;EDP,i,, -Info.System,MUX,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD_P / CPU_CLK_UNHALTED.THREAD,,Clocks,PerfMon Event Multiplexing accuracy indicator,( > 1.1 | < 0.9 ),3.1,Summary,,pub/v3,;,i,, -Info.System,Socket_CLKS,,,,,,,,,,,,,,,,UNC_CHA_CLOCKTICKS:one_unit,,,,,,,,UNC_C_CLOCKTICKS:one_unit,UNC_CLOCK.SOCKET,,Count,Socket actual clocks when any core is active on that socket,,3.4,SoC,,pub/v3,;perf,i,, -Info.System,IpFarBranch,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH_PS:USER,,Inst_Metric,"Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",< 1000000,4.3,Branches;OS,,pub/v3.6,;perf,i,, -.,auxiliary,,,,,,,,,,,,,,,,,,,,,,,,,,,-,-,,2.5,,,pub/v3,;,-,, -Aux,#Backend_Bound_Cycles,,,,,,,#NA,,,,CYCLE_ACTIVITY.STALLS_TOTAL + #Few_Uops_Executed_Threshold + EXE_ACTIVITY.BOUND_ON_STORES,,,,,,CYCLE_ACTIVITY.STALLS_TOTAL + #Few_Uops_Executed_Threshold + EXE_ACTIVITY.BOUND_ON_STORES,,( CYCLE_ACTIVITY.STALLS_TOTAL + UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,( #STALLS_TOTAL + ( UOPS_EXECUTED.CORE:c1 - #Few_Uops_Executed_Threshold ) / 2 - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ) if #SMT_on else ( #STALLS_TOTAL + UOPS_EXECUTED.CORE:c1 - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,( #STALLS_TOTAL + UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,( #STALLS_TOTAL + UOPS_DISPATCHED.THREAD:c1 - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,Count,,,4.4,,,pub,;,2,, -Aux,#Br_DoI_Jumps,,,,,,,,,,,BR_INST_RETIRED.NEAR_TAKEN - BR_INST_RETIRED.COND_TAKEN - 2 * BR_INST_RETIRED.NEAR_CALL,,,,,,BR_INST_RETIRED.NEAR_TAKEN - ( BR_INST_RETIRED.CONDITIONAL_PS - BR_INST_RETIRED.NOT_TAKEN ) - 2 * BR_INST_RETIRED.NEAR_CALL,,,,,,,,,,Count,,,4.2,Branches,,,,,, -Aux,#Branching_Retired,,,,,,,,,,,( BR_INST_RETIRED.COND + 3 * BR_INST_RETIRED.NEAR_CALL + #Br_DoI_Jumps ) / SLOTS,,,,,,( BR_INST_RETIRED.CONDITIONAL_PS + 3 * BR_INST_RETIRED.NEAR_CALL + #Br_DoI_Jumps ) / SLOTS,,,,,,,,#NA,,Slots,,,4.2,,,,,,, -Aux,#Core_Bound_Cycles,,,,,,,EXE_ACTIVITY.3_PORTS_UTIL:u0x80 + Serializing_Operation * ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ) + #Few_Uops_Executed_Threshold,,,,EXE_ACTIVITY.3_PORTS_UTIL:u0x80 + Serializing_Operation * ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ) + #Few_Uops_Executed_Threshold,,,,,,EXE_ACTIVITY.EXE_BOUND_0_PORTS + #Few_Uops_Executed_Threshold,,,,,,,,,,Count,,,4.5,PortsUtil,,pub/v4,;,3,, -Aux,#Cycles_0_Ports_Utilized,,,,,,,,,,,#NA,,,,,,UOPS_EXECUTED.CORE_CYCLES_NONE / 2 if #SMT_on else CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY,,( UOPS_EXECUTED.CORE:i1:c1 ) / 2 if #SMT_on else ( CYCLE_ACTIVITY.STALLS_TOTAL - #Frontend_RS_Empty_Cycles ),,,,( UOPS_EXECUTED.CORE:i1:c1 ) / 2 if #SMT_on else ( #STALLS_TOTAL - #Frontend_RS_Empty_Cycles ),,,,Count,,,4.2,,,,;,4,, -Aux,#Cycles_1_Port_Utilized,,,,,,,,,,,#NA,,,,,,( UOPS_EXECUTED.CORE_CYCLES_GE_1 - UOPS_EXECUTED.CORE_CYCLES_GE_2 ) / 2 if #SMT_on else EXE_ACTIVITY.1_PORTS_UTIL,,( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC ),,( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ),,( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC ),,,,Count,,,3.5,,,,;,4,, -Aux,#Cycles_2_Ports_Utilized,,,,,,,,,,,#NA,,,,,,( UOPS_EXECUTED.CORE_CYCLES_GE_2 - UOPS_EXECUTED.CORE_CYCLES_GE_3 ) / 2 if #SMT_on else EXE_ACTIVITY.2_PORTS_UTIL,,( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC - UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC ),,( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ),,( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC - UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC ),,,,Count,,,3.5,,,,;,4,, -Aux,#Cycles_3m_Ports_Utilized,,,,,,,,,,,#NA,,,,,,UOPS_EXECUTED.CORE_CYCLES_GE_3 / 2 if #SMT_on else UOPS_EXECUTED.CORE_CYCLES_GE_3,,( UOPS_EXECUTED.CORE:c3 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC,,( UOPS_EXECUTED.CORE:c3 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE:c3,,( UOPS_EXECUTED.CORE:c3 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC,,#NA,,Count,,,3.5,,,,;,4,, -Aux,#DurationTimeInSeconds,,,,,,,,,,,,,,,,,,,,,,,,,DurationTimeInMilliSeconds / 1000,,Count,,,4.1,,,pub/v3,,i,, -Aux,#Exe_Ports,,,,,,,12,,,,10,,,,,,,,,,8,,,,6,,Constant,,,4.4,,,pub/v4.4,,,, -Aux,#Execute_Cycles,,,,,,,,,,,,,,,,,( UOPS_EXECUTED.CORE_CYCLES_GE_1 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE_CYCLES_GE_1,,( UOPS_EXECUTED.CORE:c1 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC,,( UOPS_EXECUTED.CORE:c1 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE:c1,,( UOPS_EXECUTED.CORE:c1 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC,,( UOPS_DISPATCHED.CORE:c1 / 2 ) if #SMT_on else UOPS_DISPATCHED.CORE:c1,,Count,,,2.9,,,pub,;,i,, -Aux,#FB_Factor,,,,,,,,,,,,,,,,,1 + #FBHit_per_L1Miss / 2,,,,,,,,#NA,,Metric,factor used for metrics associating fixed costs for FB Hits - according to probability theory if all FB Hits come at a random rate in original L1_Miss cost interval then the average cost for each one is 0.5 of the fixed cost,,4.1,,,,,i,, -Aux,#FBHit_per_L1Miss,,,,,,,,,,,,,,,,,MEM_LOAD_RETIRED.FB_HIT_PS / MEM_LOAD_RETIRED.L1_MISS_PS,,,,,,,,#NA,,Metric,,,4.5,,,pub,,i,, -Aux,#Fetched_Uops,,,,,,,,,,,UOPS_ISSUED.ANY,,,IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS,IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS,,IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS,,,,,,,,( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) ,,Count,,,4.5,,,pub,;,i,, -Aux,#Few_Uops_Executed_Threshold,,,,,,,EXE_ACTIVITY.1_PORTS_UTIL + Retiring * EXE_ACTIVITY.2_PORTS_UTIL:u0xc,,,,,,,,,,EXE_ACTIVITY.1_PORTS_UTIL + Retiring * EXE_ACTIVITY.2_PORTS_UTIL,,UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC if ( IPC > 1.8 ) else UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC,,UOPS_EXECUTED.CORE:c3 if ( IPC > 1.8 ) else UOPS_EXECUTED.CORE:c2,,UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC if ( IPC > 1.8 ) else UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC,,UOPS_DISPATCHED.THREAD:c3 if ( IPC > 1.8 ) else UOPS_DISPATCHED.THREAD:c2,,Count,,,4.4,PortsUtil,,pub,;,2,, -Aux,#FLOP_Count,,,,,,( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE:u0x03 + FP_ARITH_INST_RETIRED2.SCALAR_HALF ) + 2 * ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED2.COMPLEX_SCALAR_HALF ) + 4 * FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE:u0x18 + 8 * ( FP_ARITH_INST_RETIRED2.128B_PACKED_HALF + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE:u0x60 ) + 16 * ( FP_ARITH_INST_RETIRED2.256B_PACKED_HALF + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) + 32 * FP_ARITH_INST_RETIRED2.512B_PACKED_HALF + 4 * AMX_OPS_RETIRED.BF16 ) if #FP16 else ( 1 * FP_ARITH_INST_RETIRED.SCALAR_SINGLE:u0x03 + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE:u0x18 + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE:u0x60 + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ),( 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 ),,,,1 * FP_ARITH_INST_RETIRED.SCALAR_SINGLE:u0x03 + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE:u0x18 + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE:u0x60 + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE,( 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 ),( 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_RETIRED2.128BIT_PACKED_BF16 + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * ( FP_ARITH_INST_RETIRED2.256BIT_PACKED_BF16 + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) + 32 * FP_ARITH_INST_RETIRED2.512BIT_PACKED_BF16 ),,,( 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 ),,,( 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 ),,#NA,,,,( 1 * ( FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE ) + 2 * FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + 4 * ( FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE ) + 8 * SIMD_FP_256.PACKED_SINGLE ),,Count,Floating Point computational (arithmetic) Operations Count,,4.5,Flops;HPC,,pub,;,i,, -Aux,#FP_Arith_Scalar,,,,,,FP_ARITH_INST_RETIRED.SCALAR_SINGLE:u0x03 + FP_ARITH_INST_RETIRED2.SCALAR,,,,,,,,,,,,,FP_ARITH_INST_RETIRED.SCALAR_SINGLE:u0x03,,#NA,,,,FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE,,Count,Floating Point computational (arithmetic) Operations Count,,4.5,Flops;HPC,,pub,;,i,, -Aux,#FP_Arith_Vector,,,,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0x3c + FP_ARITH_INST_RETIRED2.VECTOR,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0x3c,,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc,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 + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc + FP_ARITH_INST_RETIRED2.128BIT_PACKED_BF16:u0xe0,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0x3c,,#NA,,,,FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE,,Count,Floating Point computational (arithmetic) Operations Count,,4.5,Flops;HPC,,pub,;,i,, -Aux,#Frontend_RS_Empty_Cycles,,,,,,,,,,,,,,,,,#NA,,,,,,,,RS_EVENTS.EMPTY_CYCLES if ( Fetch_Latency > 0.1 ) else 0,,Count,,,3.1,,,pub,;,2,, -Aux,#Frontend_Latency_Cycles,,,,,,,,,,,,,,,,,,,#NA,,,,,,"min( CPU_CLK_UNHALTED.THREAD , IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE )",,Count,,,3,,,pub,;,2,, -Aux,#HighIPC,,,,,,,,,,,,,,,,,,,,,,,,,IPC / #Pipeline_Width,,Metric,,> 0.35,3.5,,,pub,;,2,, -Aux,#ITLB_Miss_Cycles,,,,,,,,,,,,,,,,,#NA,,( 14 * ITLB_MISSES.STLB_HIT + ITLB_MISSES.WALK_DURATION:c1 + 7 * ITLB_MISSES.WALK_COMPLETED ),,( 14 * ITLB_MISSES.STLB_HIT + ITLB_MISSES.WALK_DURATION ),,,,( 12 * ITLB_MISSES.STLB_HIT + ITLB_MISSES.WALK_DURATION ),,Count,,,4.1,MemoryTLB,,pub,;,3,, -Aux,#L2_Bound_Ratio,,,,,,,#NA,,,,,,,,,,( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CLKS,,,,,,,,#NA,,Fraction,,,3.1,,,pub,;,3,, -Aux,#Light_Ops_Sum,,,,,,,FP_Arith + Int_Operations + Memory_Operations + Fused_Instructions + Non_Fused_Branches + Nop_Instructions,,,,,FP_Arith + Memory_Operations + Branch_Instructions + Nop_Instructions ,,,,,FP_Arith + Memory_Operations + Fused_Instructions + Non_Fused_Branches + Nop_Instructions ,,,,,,,,,,Count,,,4.4,,,pub/v4.3,,3,, -Aux,#LOAD_L1_MISS,,,,,,,,,,,,,,,,,#NA,,,,MEM_LOAD_UOPS_RETIRED.L2_HIT_PS + MEM_LOAD_UOPS_RETIRED.L3_HIT_PS + MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT_PS + MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS + MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS_PS,,MEM_LOAD_UOPS_RETIRED.L2_HIT_PS + MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT_PS + MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS + MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS_PS,,#NA,,Count,,,4.1,,,pub,;,i,, -Aux,#LOAD_L1_MISS_NET,,,,,,,,,,,,,,,,,MEM_LOAD_RETIRED.L1_MISS_PS,,,#LOAD_L1_MISS + MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM_PS + MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM_PS + MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS + MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD_PS,#LOAD_L1_MISS + MEM_LOAD_UOPS_RETIRED.L3_MISS_PS,#LOAD_L1_MISS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM_PS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM_PS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD_PS,#LOAD_L1_MISS + MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS,,#NA,,Count,,,4,,,pub,;,i,, -Aux,#LOAD_L2_HIT,,,,,,,#NA,,,,,,,,,,MEM_LOAD_RETIRED.L2_HIT_PS * ( 1 + #FBHit_per_L1Miss ),,,,,,,,#NA,,Count,,,4.3,,,pub/v4.2,;,i,, -Aux,#LOAD_L3_HIT,,,,,,,,,,,,,,,,,MEM_LOAD_RETIRED.L3_HIT_PS,,,,MEM_LOAD_UOPS_RETIRED.L3_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,,,,,i,, -Aux,#LOAD_LCL_MEM,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.4,Server,,pub,;,i,, -Aux,#LOAD_LCL_PMM,,,,,,,,,,,,,,( MEM_LOAD_RETIRED.LOCAL_PMM_PS * ( 1 + #FBHit_per_L1Miss ) ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,Count,,,3.5,Server,,pub,;,i,, -Aux,#LOAD_RMT_FWD,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.1,Server,,pub,;,i,, -Aux,#LOAD_RMT_HITM,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.1,Server,,pub,;,i,, -Aux,#LOAD_RMT_MEM,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.1,Server,,pub,;,i,, -Aux,#LOAD_RMT_PMM,,,,,,,,,,,,,,( MEM_LOAD_L3_MISS_RETIRED.REMOTE_PMM_PS * ( 1 + #FBHit_per_L1Miss ) ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,Count,,,3.5,Server,,pub,;,i,, -Aux,#LOAD_XSNP_HIT,,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD + MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * ( 1 - #True_XSNP_HitM_Fraction ),,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS + MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS * ( 1 - #True_XSNP_HitM_Fraction ),MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS,,,,MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,Offcore,,,,i,, -Aux,#LOAD_XSNP_HITM,,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * #True_XSNP_HitM_Fraction,,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS * #True_XSNP_HitM_Fraction,MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS,,,,MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,Offcore,,,,i,, -Aux,#LOAD_XSNP_MISS,,,,,,,,,,,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS_PS,,,,MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,,,,,i,, -Aux,#MEM_Bound_Ratio,,,,,,,MEMORY_ACTIVITY.STALLS_L3_MISS / CLKS,,,,,,,,,,CYCLE_ACTIVITY.STALLS_L3_MISS / CLKS + #L2_Bound_Ratio - L2_Bound,,,,,,,,,,Fraction,,,4.1,,,pub,;,3,, -Aux,#Mem_DDR_Hit_Fraction,,,,,,,,,,,,,,( ( 19 * #LOAD_RMT_MEM + 10 * ( #LOAD_LCL_MEM + #LOAD_RMT_FWD + #LOAD_RMT_HITM ) ) / ( ( 19 * #LOAD_RMT_MEM + 10 * ( #LOAD_LCL_MEM + #LOAD_RMT_FWD + #LOAD_RMT_HITM ) ) + ( 25 * #LOAD_LCL_PMM + 33 * #LOAD_RMT_PMM ) ) ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,Fraction,,,3.5,Server,,pub,;,3,, -Aux,#Mem_L2_Store_Cost,,,,,,,,,,,10,,,,,11,,,,,,,9,,,,Constant,,,4,,,,;,4,, -Aux,#Mem_L3_Hit_Fraction,,,,,,,,,,,,,,,,,#NA,,,,MEM_LOAD_UOPS_RETIRED.L3_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.L3_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_RETIRED.L3_MISS_PS ),,MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS ),MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS ),MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS ),,Fraction,,,3,,,pub,;,3,, -Aux,#Mem_Lock_St_Fraction,,,,,,,,,,,,,,,,,MEM_INST_RETIRED.LOCK_LOADS_PS / MEM_INST_RETIRED.ALL_STORES_PS,,,,,,MEM_UOPS_RETIRED.LOCK_LOADS_PS / MEM_UOPS_RETIRED.ALL_STORES_PS,,,,Fraction,,,3,,,,;,4,, -Aux,#Memory_Bound_Fraction,,,,,,,#NA,,,,,,,,,,( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / #Backend_Bound_Cycles,,( CYCLE_ACTIVITY.STALLS_MEM_ANY + RESOURCE_STALLS.SB ) / #Backend_Bound_Cycles,,,,,,( #STALLS_MEM_ANY + RESOURCE_STALLS.SB ) / #Backend_Bound_Cycles,,Fraction,,,4,,,pub,;,2,, -Aux,#Mispred_Clears_Fraction,,,,,,,Branch_Mispredicts / Bad_Speculation,,,,,,,,,,,,,,,,,,BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT ),,Fraction,,,4.4,BrMispredicts,,pub,;,2,, -Aux,#OCR_all_rfo_l3_hit_snoop_hitm,,,,,,,,,,,#NA,,,OCR.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE + OCR.PF_L2_RFO.L3_HIT.HITM_OTHER_CORE,,OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE + OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.HITM_OTHER_CORE,OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM,,,,,,,,,,Count,,,4,Offcore,,,,i,, -Aux,#OCR_all_rfo_l3_miss_remote_hitm,,,,,,,,,,,#NA,,,OCR.DEMAND_RFO.L3_MISS.REMOTE_HITM + OCR.PF_L2_RFO.L3_MISS.REMOTE_HITM,,OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.REMOTE_HITM + OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.REMOTE_HITM,,,,,,,,,,,Count,,,4,Offcore;Server,,,,i,, -Aux,#ORO_Demand_RFO_C1,,,,,,,,,,,,,,,,,,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO )",,,,Count,,,2.9,Offcore,,,;,4,, -Aux,#ORO_DRD_Any_Cycles,,,,,,,,,,,,,,,,,,,,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD )",,Count,,,3.1,Offcore,,pub,;,4,, -Aux,#ORO_DRD_BW_Cycles,,,,,,,,,,,,,,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD:c4 )",,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD:c6 )",,Count,,,3.1,Offcore,,pub,;,4,, -Aux,#PERF_METRICS_SUM,,,,,,,,,,,( PERF_METRICS.FRONTEND_BOUND + PERF_METRICS.BAD_SPECULATION + PERF_METRICS.RETIRING + PERF_METRICS.BACKEND_BOUND ),,,,,,,,,,,,,,#NA,,Count,,,4.1,TmaL1,,pub/v4,;perf,1,, -Aux,#Pipeline_Width,,,,,,,6,,,,5,,,,,,,,,,,,,,4,,Constant,,,4.1,TmaL1,,pub,;perf,1,, -Aux,#Recovery_Cycles,,,,,,,#NA,,,,,#NA,,,,,,,,,,,,,( INT_MISC.RECOVERY_CYCLES_ANY / 2 ) if #SMT_on else INT_MISC.RECOVERY_CYCLES,,Count,,,4.2,,,pub,,1,, -Aux,#Retire_Fraction,,,,,,,,,,,,,,,,,,,,,,,,,#Retired_Slots / UOPS_ISSUED.ANY,,Fraction,,,4.3,,,pub,;,2,, -Aux,#Retired_Slots,,,,,,,,,,,Retiring * SLOTS,,,,,,,,,,,,,,UOPS_RETIRED.RETIRE_SLOTS,,Count,Retired slots per Logical Processor,,4.1,TmaL1,,pub,;perf,1,, -Aux,#SQ_Full_Cycles,,,,,,,,,,,#NA,( SQ_MISC.SQ_FULL:c1 / 2 ) if #SMT_on else SQ_MISC.SQ_FULL:c1,,,,,,,,,,,( OFFCORE_REQUESTS_BUFFER.SQ_FULL / 2 ) if #SMT_on else OFFCORE_REQUESTS_BUFFER.SQ_FULL,,,,Count,,,4,Offcore,,,,4,, -Aux,#STALLS_MEM_ANY,,,,,,,,,,,,,,,,,,,#NA,,,,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.STALLS_LDM_PENDING )",,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.STALLS_L1D_PENDING )",,Count,,,3.1,,,pub,;,2,, -Aux,#STALLS_TOTAL,,,,,,,,,,,,,,,,,,,#NA,,,,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.CYCLES_NO_EXECUTE )",,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.CYCLES_NO_DISPATCH )",,Count,,,2.9,,,pub,;,2,, -Aux,#Store_L2_Hit_Cycles,,,,,,,MEM_STORE_RETIRED.L2_HIT * #Mem_L2_Store_Cost * ( 1 - #Mem_Lock_St_Fraction ),,,,,,,,,,,,,,,,L2_RQSTS.RFO_HIT * #Mem_L2_Store_Cost * ( 1 - #Mem_Lock_St_Fraction ),,#NA,,Count,,,3.1,,,,;,4,, -Aux,#True_XSNP_HitM_Fraction,,,,,,,,OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM / ( OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM + OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD ),,OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM / ( OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM + OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD ),,,,OCR.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE / ( OCR.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE + OCR.DEMAND_DATA_RD.L3_HIT.HIT_OTHER_CORE_FWD ),,OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE / ( OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE + OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD ),,,,,,,,,#NA,,Fraction,,,3.5,Offcore,,,;,3,, -Aux,#Mem_L3_Weight,,,,,,,,,,,,,,,,,#NA,,,,,,,,7,,Constant,,,2.5,,,pub,;,-,, -Aux,#Mem_STLB_Hit_Cost,,,,,,,,,,,7,,,,,,9,,,,8,,,,7,,Constant,,,4.2,MemoryTLB,,pub,;,4,, -Aux,#Mem_XSNP_HitM_Cost,,,,,,80 * Average_Frequency,28 * Average_Frequency,54 * Average_Frequency,,48 * Average_Frequency,32.5 * Average_Frequency,,,,,47.5 * Average_Frequency,22 * Average_Frequency,,,,,,60,,,,NanoSeconds,,,4.2,,,,,4,, -Aux,#Mem_XSNP_Hit_Cost,,,,,,79.5 * Average_Frequency,27 * Average_Frequency,53 * Average_Frequency,,47.5 * Average_Frequency,27 * Average_Frequency,,,,,47.5 * Average_Frequency,20 * Average_Frequency,,,,,,43,,,,NanoSeconds,,,4.2,,,,,4,, -Aux,#Mem_XSNP_None_Cost,,,,,,37 * Average_Frequency,12 * Average_Frequency,22.5 * Average_Frequency,,23 * Average_Frequency,12.5 * Average_Frequency,,,,,20.5 * Average_Frequency,10 * Average_Frequency,,,,,41,29,,,,NanoSeconds,,,4.2,,,,,4,, -Aux,#Mem_Local_DRAM_Cost,,,,,,108 * Average_Frequency,,,,66.5 * Average_Frequency,,,,,,80 * Average_Frequency,,,,,,200,,,,,NanoSeconds,,,4.2,Server,,,,5,, -Aux,#Mem_Remote_DRAM_Cost,,,,,,186 * Average_Frequency,,,,131 * Average_Frequency,,,,,,147.5 * Average_Frequency,,,,,,310,,,,,NanoSeconds,,,4.2,Server,,,,5,, -Aux,#Mem_Remote_HitM_Cost,,,,,,172.5 * Average_Frequency,,,,120 * Average_Frequency,,,,,,110 * Average_Frequency,,,,,,200,,,,,NanoSeconds,,,4.2,Server,,,,5,, -Aux,#Mem_Remote_Fwd_Cost,,,,,,172.5 * Average_Frequency,,,,120 * Average_Frequency,,,,,,110 * Average_Frequency,,,,,,180,,,,,NanoSeconds,,,4.2,Server,,,,5,, -Aux,#Mem_L2_Hit_Cost,,,,,,4 * Average_Frequency,3 * Average_Frequency,5 * Average_Frequency,,4 * Average_Frequency,,,,,,,3.5 * Average_Frequency,,,,,180,,,,,NanoSeconds,,,4.2,,,,,5,, -Aux,#BAClear_Cost,,,,,,,13,,,,10,,,,,,9,,,,,,,,12,,Constant,,,4.4,,,pub,,i,, -Aux,#MS_Switches_Cost,,,,,,,,,,,,3,,,,,,,,,2,,,,3,,Constant,,,4,,,pub,;,3,, -Aux,#Avg_Assist_Cost,,,,,,,,,,,,,,,,,,,,,,,100,,,,Constant,,,4.4,,,,,3,, -Aux,#OneMillion,,,,,,,,,,,,,,,,,,,,,,,,,1000000,,Constant,,,2.6,,,pub,;,i,, -Aux,#OneBillion,,,,,,,,,,,,,,,,,,,,,,,,,1000000000,,Constant,,,3,,,pub,;,i,, -Aux,#Energy_Unit,,,,,,,,,,,,,,,,,,,,,61,,15.6,,,,Constant,,,3,,,pub,;,i,, -Aux,#Errata_Whitelist,,,,,,,ADL038,,,,#NA,,,,,,SKL091,,BDE69;BDE70,,,,,,,,Constant,,,4.5,,,,;toplev,i,, -Aux,#SMT_on,,,,,,,,,,,,,,,,,,,,,,,,,1,,ExternalParameter,,,2.7,,,pub/v3,;,1,, -Aux,#EBS_Mode,,,,,,,,,,,#NA,,,,,,0,,,,,,,,1,,ExternalParameter,Use ratios that apply to Event Based Sampling where applicable (may increase counter multiplexing),,3.6,,,pub/v3.3,;vtune,1,, -Aux,#Base_Frequency,,,,,,,,,,,,,,,,,,,,,,,,,#NA,,ExternalParameter,Base frequency of the CPU in MHz (max non-turbo frequency in CPU brand string). This is an input parameter by the invoking tool. Negative value (of Turbo_Utilization) is reported by default to warn the user.,,3.4,Summary,,pub/v3.4,;,i,, -Aux,#Memory,,,,,,,,,,1,,,,1,,,,,,,,,,,#NA,,ExternalParameter,,,4.4,Server,,pub/v3.5,;,3,, -Aux,#PMM_App_Direct,,,,,,,,,,,,,,1 if #Memory == 1 else 0,,,,,,,,,,,#NA,,ExternalParameter,,,4.5,Server,,pub,;,3,, -Aux,DurationTimeInMilliSeconds,,,,,,,,,,,,,,,,,,,,,,,,,,,ExternalParameter,,,4.2,Summary,,pub,;EDP;vtune,,, -Aux,#FP16,,,,,,1,,,,,,,,,,,,,,,,,,,,,ExternalParameter,,,4.5,Flops,,pub/v4.5,,,, +TMA,Version,4.7-full,,,,,,,,,,,,,,,,,,,,,,,,,,Send us your feedback to Ahmad dot Yasin at intel dot com,,,,,4.687,,,,,,,,, +.,,,,,,,,Server,Server,,,,Server,,,Server,Server,,Server,,Server,,Server,,Server,,Server,,,,,,,,,,,,,,, +Key,Level1,Level2,Level3,Level4,Level5,Level6,MTL,SPR-HBM,SPR,ADL/RPL,TGL,RKL,ICX,ICL,CNL,CPX,CLX,KBLR/CFL/CML,SKX,SKL/KBL,BDX,BDW,HSX,HSW,IVT,IVB,JKT/SNB-EP,SNB,Locate-with,Count Domain,Metric Description,Threshold,Version,Metric Group,Metric Max,flavor,level,Tool;,ToolAlias,Attribute,Tuning Hint,Link +FE,Frontend_Bound,,,,,,,,,,,,,PERF_METRICS.FRONTEND_BOUND / #PERF_METRICS_SUM - INT_MISC.UOP_DROPPING / SLOTS,,,,,,,,,,,,,,IDQ_UOPS_NOT_DELIVERED.CORE / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.LATENCY_GE_4_PS,Slots,This category represents fraction of slots where the processor's Frontend undersupplies its Backend. Frontend denotes the first part of the processor core responsible to fetch operations that are executed later on by the Backend part. Within the Frontend; a branch predictor predicts the next address to fetch; cache-lines are fetched from the memory subsystem; parsed into instructions; and lastly decoded into micro-operations (uops). Ideally the Frontend can issue Pipeline_Width uops every cycle to the Backend. Frontend Bound denotes unutilized issue-slots when there is no Backend stall; i.e. bubbles where Frontend delivered no uops while Backend could have accepted them. For example; stalls due to instruction-cache misses would be categorized under Frontend Bound.,> 0.15,4.3,TmaL1;PGO,,pub/v3,1,,,,, +FE,,Fetch_Latency,,,,,,,,( PERF_METRICS.FETCH_LATENCY / #PERF_METRICS_SUM - INT_MISC.UOP_DROPPING / SLOTS ),,,,( #Pipeline_Width * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE - INT_MISC.UOP_DROPPING ) / SLOTS,,,,,,#Pipeline_Width * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / SLOTS,,#Pipeline_Width * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / SLOTS,,,,,,#Pipeline_Width * #Frontend_Latency_Cycles / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? RS_EVENTS.EMPTY_END : FRONTEND_RETIRED.LATENCY_GE_16_PS;FRONTEND_RETIRED.LATENCY_GE_8_PS,Slots,This metric represents fraction of slots the CPU was stalled due to Frontend latency issues. For example; instruction-cache misses; iTLB misses or fetch stalls after a branch misprediction are categorized under Frontend Latency. In such cases; the Frontend eventually delivers no uops for some period.,> 0.1 & P,4.3,Frontend;TmaL2,,pub/v3,2,,,,, +FE,,,ICache_Misses,,,,,,,,,,,ICACHE_DATA.STALLS / CLKS,ICACHE_16B.IFDATA_STALL / CLKS,,,,,( ICACHE_16B.IFDATA_STALL + 2 * ICACHE_16B.IFDATA_STALL:c1:e1 ) / CLKS,,,,ICACHE.IFDATA_STALL / CLKS,,ICACHE.IFETCH_STALL / CLKS - ITLB_Misses,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.L2_MISS_PS;FRONTEND_RETIRED.L1I_MISS_PS,Clocks,This metric represents fraction of cycles the CPU was stalled due to instruction cache misses.,> 0.05 & P,4.6,BigFootprint;FetchLat;IcMiss,,pub/v3,3,,,,Using compiler's Profile-Guided Optimization (PGO) can reduce i-cache misses through improved hot code layout., +FE,,,ITLB_Misses,,,,,,,,,,,,,,,,,ICACHE_TAG.STALLS / CLKS,,,,,,,,#ITLB_Miss_Cycles / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? ITLB_MISSES.WALK_COMPLETED : FRONTEND_RETIRED.STLB_MISS_PS;FRONTEND_RETIRED.ITLB_MISS_PS,Clocks,This metric represents fraction of cycles the CPU was stalled due to Instruction TLB (ITLB) misses.,> 0.05 & P,4.6,BigFootprint;FetchLat;MemoryTLB,,pub/v3,3,,,,"Consider large 2M pages for code (selectively prefer hot large-size function, due to limited 2M entries). Linux options: standard binaries use libhugetlbfs; Hfsort.",https://github.com/libhugetlbfs/libhugetlbfs;https://research.fb.com/publications/optimizing-function-placement-for-large-scale-data-center-applications-2/ +FE,,,Branch_Resteers,,,,,,,,,,,,,,,,,INT_MISC.CLEAR_RESTEER_CYCLES / CLKS + Unknown_Branches,,,,,,,,#BAClear_Cost * ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ) / CLKS,BR_MISP_RETIRED.ALL_BRANCHES,Clocks,This metric represents fraction of cycles the CPU was stalled due to Branch Resteers. Branch Resteers estimates the Frontend delay in fetching operations from corrected path; following all sorts of miss-predicted branches. For example; branchy code with lots of miss-predictions might get categorized under Branch Resteers. Note the value of this node may overlap with its siblings.,> 0.05 & P; ~overlap,4.6,FetchLat,,pub/v3,3,,,,, +FE,,,,Mispredicts_Resteers,,,,,,,,,,,,,,,,#Mispred_Clears_Fraction * INT_MISC.CLEAR_RESTEER_CYCLES / CLKS,,BR_MISP_RETIRED.ALL_BRANCHES * Branch_Resteers / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ),,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : INT_MISC.CLEAR_RESTEER_CYCLES,Clocks,This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Branch Misprediction at execution stage. ,> 0.05 & P; $issueBM,4.3,BadSpec;BrMispredicts,,pub/v4.3,4,,,,, +FE,,,,Clears_Resteers,,,,,,,,,,,,,,,,( 1 - #Mispred_Clears_Fraction ) * INT_MISC.CLEAR_RESTEER_CYCLES / CLKS,,MACHINE_CLEARS.COUNT * Branch_Resteers / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ),,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : INT_MISC.CLEAR_RESTEER_CYCLES,Clocks,This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Machine Clears. ,> 0.05 & P; $issueMC,4.3,BadSpec;MachineClears,,pub/v4.3,4,,,,, +FE,,,,Unknown_Branches,,,,,,INT_MISC.UNKNOWN_BRANCH_CYCLES / CLKS,,,,,,,,,,#BAClear_Cost * BACLEARS.ANY / CLKS,,Branch_Resteers - Mispredicts_Resteers - Clears_Resteers,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL/ICL/ICX/TGL/RKL ? BACLEARS.ANY : FRONTEND_RETIRED.UNKNOWN_BRANCH,Clocks,This metric represents fraction of cycles the CPU was stalled due to new branch address clears. These are fetched branches the Branch Prediction Unit was unable to recognize (e.g. first time the branch is fetched or hitting BTB capacity limit) hence called Unknown Branches,> 0.05 & P,4.3,BigFootprint;FetchLat,,pub/v4.3,4,,,,, +FE,,,MS_Switches,,,,,,,#MS_Switches_Cost * UOPS_RETIRED.MS:c1:e1 / #Retire_Fraction / CLKS,,,,,,,,,,,,,,,,,,#MS_Switches_Cost * IDQ.MS_SWITCHES / CLKS,MTL/ADL/SPR/SPR-HBM ? FRONTEND_RETIRED.MS_FLOWS : IDQ.MS_SWITCHES,Clocks_Estimated,This metric estimates the fraction of cycles when the CPU was stalled due to switches of uop delivery to the Microcode Sequencer (MS). Commonly used instructions are optimized for delivery by the DSB (decoded i-cache) or MITE (legacy instruction decode) pipelines. Certain operations cannot be handled natively by the execution pipeline; and must be performed by microcode (small programs injected into the execution stream). Switching to the MS too often can negatively impact performance. The MS is designated to deliver long uop flows required by CISC instructions like CPUID; or uncommon conditions like Floating Point Assists when dealing with Denormals.,> 0.05 & P; $issueMC; $issueMS; $issueMV; $issueSO,4.6,FetchLat;MicroSeq,1.0,pub/v3.4,3,,,,, +FE,,,LCP,,,,,,,,,,,,,,,,,DECODE.LCP / CLKS,,,,,,,,ILD_STALL.LCP / CLKS,,Clocks,This metric represents fraction of cycles CPU was stalled due to Length Changing Prefixes (LCPs). Using proper compiler flags or Intel Compiler by default will certainly avoid this. #Link: Optimization Guide about LCP BKMs.,> 0.05 & P; $issueFB,4.6,FetchLat,,pub/v4.4,3,,,,See section 'Length-Changing Prefixes (LCP)' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +FE,,,DSB_Switches,,,,,,,,,,,,,,,,,,,,,,,,,DSB2MITE_SWITCHES.PENALTY_CYCLES / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.DSB_MISS_PS,Clocks,This metric represents fraction of cycles the CPU was stalled due to switches from DSB to MITE pipelines. The DSB (decoded i-cache) is a Uop Cache where the front-end directly delivers Uops (micro operations) avoiding heavy x86 decoding. The DSB pipeline has shorter latency and delivered higher bandwidth than the MITE (legacy instruction decode pipeline). Switching between the two pipelines can cause penalties hence this metric measures the exposed penalty.,> 0.05 & P; $issueFB,4.3,DSBmiss;FetchLat,,pub/v3.6,3,,,,See section 'Optimization for Decoded Icache' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +FE,,Fetch_Bandwidth,,,,,,,,,,,,"max( 0 , Frontend_Bound - Fetch_Latency )",,,,,,,,,,,,,,Frontend_Bound - Fetch_Latency,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_2_PS,Slots,This metric represents fraction of slots the CPU was stalled due to Frontend bandwidth issues. For example; inefficiencies at the instruction decoders; or restrictions for caching in the DSB (decoded uops cache) are categorized under Fetch Bandwidth. In such cases; the Frontend typically delivers suboptimal amount of uops to the Backend.,> 0.2; $issueFB,4.7,FetchBW;Frontend;TmaL2,,pub/v3,2,,,,, +FE,,,MITE,,,,,,,( IDQ.MITE_CYCLES_ANY - IDQ.MITE_CYCLES_OK ) / CORE_CLKS / 2,,,,( IDQ.MITE_CYCLES_ANY - IDQ.MITE_CYCLES_OK ) / CORE_CLKS / 2,,,,,,,,,,,,( IDQ.ALL_MITE_CYCLES_ANY_UOPS - IDQ.ALL_MITE_CYCLES_4_UOPS ) / CORE_CLKS / 2,,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : FRONTEND_RETIRED.ANY_DSB_MISS,Slots_Estimated,This metric represents Core fraction of cycles in which CPU was likely limited due to the MITE pipeline (the legacy decode pipeline). This pipeline is used for code that was not pre-cached in the DSB or LSD. For example; inefficiencies due to asymmetric decoders; use of long immediate or LCP can manifest as MITE fetch bandwidth bottleneck.,> 0.1 & P,4.5,DSBmiss;FetchBW,,pub/v4,3,,,,Consider tuning codegen of 'small hotspots' that can fit in DSB. Read about 'Decoded ICache' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +FE,,,,Decoder0_Alone,,,,,,,,,,,,,,,,( INST_DECODED.DECODERS:c1 - INST_DECODED.DECODERS:c2 ) / CORE_CLKS / 2,,,,,,,,,,Slots_Estimated,This metric represents fraction of cycles where decoder-0 was the only active decoder,> 0.1 & P; $issueD0,4.5,DSBmiss;FetchBW,,,4,,,,, +FE,,,,MITE_4wide,,,,,,#NA,,,,( IDQ.MITE_UOPS:c4 - IDQ.MITE_UOPS:c5 ) / CLKS,,,,,,,,,,,,,,,,Core_Clocks,This metric represents fraction of cycles where (only) 4 uops were delivered by the MITE pipeline,> 0.05 & P,4.4,DSBmiss;FetchBW,,,4,,,,, +FE,,,DSB,,,,,,,,,,,,,,,,,( IDQ.DSB_CYCLES_ANY - IDQ.DSB_CYCLES_OK ) / CORE_CLKS / 2,,,,,,( IDQ.ALL_DSB_CYCLES_ANY_UOPS - IDQ.ALL_DSB_CYCLES_4_UOPS ) / CORE_CLKS / 2,,,,Slots_Estimated,This metric represents Core fraction of cycles in which CPU was likely limited due to DSB (decoded uop cache) fetch pipeline. For example; inefficient utilization of the DSB cache structure or bank conflict when reading from it; are categorized here.,> 0.15 & P,4.6,DSB;FetchBW,,pub/v4,3,,,,, +FE,,,LSD,,,,,,#NA,,,,#NA,,,,#NA,( LSD.CYCLES_ACTIVE - LSD.CYCLES_OK ) / CORE_CLKS / 2,,,,,,,,,,#NA,,Slots_Estimated,This metric represents Core fraction of cycles in which CPU was likely limited due to LSD (Loop Stream Detector) unit. LSD typically does well sustaining Uop supply. However; in some rare cases; optimal uop-delivery could not be reached for small loops whose size (in terms of number of uops) does not suit well the LSD structure.,> 0.15 & P,4.6,FetchBW;LSD,,pub/v4,3,,,,, +BAD,Bad_Speculation,,,,,,,,,,,,,"max( 1 - ( Frontend_Bound + Backend_Bound + Retiring ) , 0 )",( UOPS_ISSUED.ANY - #Retired_Slots + #Pipeline_Width * INT_MISC.ALL_RECOVERY_CYCLES ) / SLOTS,,,,,,,,,,,,,( UOPS_ISSUED.ANY - #Retired_Slots + #Pipeline_Width * #Recovery_Cycles ) / SLOTS,#NA,Slots,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.,> 0.15,4.1,TmaL1,,pub/v3,1,,,,, +BAD,,Branch_Mispredicts,,,,,,,,PERF_METRICS.BRANCH_MISPREDICTS / #PERF_METRICS_SUM,,,,,,,,,,,,,,,,,,#Mispred_Clears_Fraction * Bad_Speculation,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? BR_MISP_RETIRED.ALL_BRANCHES_PS : ICL/ICX/RKL/TGL ? BR_MISP_RETIRED.ALL_BRANCHES : TOPDOWN.BR_MISPREDICT_SLOTS,Slots,This metric represents fraction of slots the CPU has wasted due to Branch Misprediction. These slots are either wasted by uops fetched from an incorrectly speculated program path; or stalls when the out-of-order part of the machine needs to recover its state from a speculative path.,> 0.1 & P; $issueBM,4.3,BadSpec;BrMispredicts;TmaL2,,pub/v3,2,,,,Using profile feedback in the compiler may help. Please see the Optimization Manual for general strategies for addressing branch misprediction issues.,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +BAD,,,Other_Mispredicts,,,,,,,,,,,,,,,,,"max( Branch_Mispredicts * ( 1 - BR_MISP_RETIRED.ALL_BRANCHES / ( INT_MISC.CLEARS_COUNT - MACHINE_CLEARS.COUNT ) ) , 0.0001 )",,,,,,,,,,Slots,This metric estimates fraction of slots the CPU was stalled due to other cases of misprediction (non-retired x86 branches or other types).,> 0.05 & P,4.6,BrMispredicts,,pub/v4.6,3,,,,, +BAD,,Machine_Clears,,,,,,,,,,,,"max( 0 , Bad_Speculation - Branch_Mispredicts )",,,,,,,,,,,,,,Bad_Speculation - Branch_Mispredicts,MACHINE_CLEARS.COUNT,Slots,This metric represents fraction of slots the CPU has wasted due to Machine Clears. These slots are either wasted by uops fetched prior to the clear; or stalls the out-of-order portion of the machine needs to recover its state after the clear. For example; this can happen due to memory ordering Nukes (e.g. Memory Disambiguation) or Self-Modifying-Code (SMC) nukes.,> 0.1 & P; $issueMC; $issueSyncxn,4.5,BadSpec;MachineClears;TmaL2,,pub/v3,2,,,,"See ""Memory Disambiguation"" in Optimization Manual and:",https://software.intel.com/sites/default/files/m/d/4/1/d/8/sma.pdf +BAD,,,Other_Nukes,,,,,,,,,,,,,,,,,"max( Machine_Clears * ( 1 - MACHINE_CLEARS.MEMORY_ORDERING / MACHINE_CLEARS.COUNT ) , 0.0001 )",,,,,,,,#NA,,Slots,This metric represents fraction of slots the CPU has wasted due to Nukes (Machine Clears) not related to memory ordering.,> 0.05 & P,4.7,Machine_Clears,,,3,,,,, +BE,Backend_Bound,,,,,,,,,PERF_METRICS.BACKEND_BOUND / #PERF_METRICS_SUM,,,,PERF_METRICS.BACKEND_BOUND / #PERF_METRICS_SUM + ( #Pipeline_Width * INT_MISC.CLEARS_COUNT ) / SLOTS,,,,,,1 - Frontend_Bound - ( UOPS_ISSUED.ANY + #Pipeline_Width * #Recovery_Cycles ) / SLOTS,,,,,,,,1 - ( Frontend_Bound + Bad_Speculation + Retiring ),SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : TOPDOWN.BACKEND_BOUND_SLOTS,Slots,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.,> 0.2,4.3,TmaL1,,pub/v3,1,,,,, +BE/Mem,,Memory_Bound,,,,,,,,PERF_METRICS.MEMORY_BOUND / #PERF_METRICS_SUM,,,,,,,,,,,,,,,,,,#Memory_Bound_Fraction * Backend_Bound,#NA,Slots,This metric represents fraction of slots the Memory subsystem within the Backend was a bottleneck. Memory Bound estimates fraction of slots where pipeline is likely stalled due to demand load or store instructions. This accounts mainly for (1) non-completed in-flight memory demand loads which coincides with execution units starvation; in addition to (2) cases where stores could impose backpressure on the pipeline when many of them get buffered at the same time (less common out of the two).,> 0.2 & P,4.1,Backend;TmaL2,,pub/v3,2,,,,, +BE/Mem,,,L1_Bound,,,,,,,"max( ( EXE_ACTIVITY.BOUND_ON_LOADS - MEMORY_ACTIVITY.STALLS_L1D_MISS ) / CLKS , 0 )",,,,,,,,,,,,"max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CLKS , 0 )",,,,"max( ( #STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_PENDING ) / CLKS , 0 )",,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L1_HIT_PS;MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS : MEM_LOAD_RETIRED.L1_HIT_PS;MEM_LOAD_RETIRED.FB_HIT_PS,Stalls,This metric estimates how often the CPU was stalled without loads missing the L1 data cache. The L1 data cache typically has the shortest latency. However; in certain cases like loads blocked on older stores; a load might suffer due to high latency even though it is being satisfied by the L1. Another example is loads who miss in the TLB. These cases are characterized by execution unit stalls; while some non-completed demand load lives in the machine without having that demand load missing the L1 cache.,> 0.1 & P; $issueL1; $issueMC,4.4,CacheHits;MemoryBound;TmaL3mem,,pub/v3,3,,,,, +BE/Mem,,,,DTLB_Load,,,"MEM_INST_RETIRED.STLB_HIT_LOADS*min($PEBS, #Mem_STLB_Hit_Cost) / CLKS + Load_STLB_Miss",,,"min( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT:c1 + DTLB_LOAD_MISSES.WALK_ACTIVE , max( CYCLE_ACTIVITY.CYCLES_MEM_ANY - MEMORY_ACTIVITY.CYCLES_L1D_MISS , 0 ) ) / CLKS",,,,,,,,,,"min( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT:c1 + DTLB_LOAD_MISSES.WALK_ACTIVE , max( CYCLE_ACTIVITY.CYCLES_MEM_ANY - CYCLE_ACTIVITY.CYCLES_L1D_MISS , 0 ) ) / CLKS",,( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT + DTLB_LOAD_MISSES.WALK_DURATION:c1 + 7 * DTLB_LOAD_MISSES.WALK_COMPLETED ) / CLKS,,,,,,( #Mem_STLB_Hit_Cost * DTLB_LOAD_MISSES.STLB_HIT + DTLB_LOAD_MISSES.WALK_DURATION ) / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.STLB_MISS_LOADS_PS : MEM_INST_RETIRED.STLB_MISS_LOADS_PS,Clocks_Estimated,This metric roughly estimates the fraction of cycles where the Data TLB (DTLB) was missed by load accesses. TLBs (Translation Look-aside Buffers) are processor caches for recently used entries out of the Page Tables that are used to map virtual- to physical-addresses by the operating system. This metric approximates the potential delay of demand loads missing the first-level data TLB (assuming worst case scenario with back to back misses to different pages). This includes hitting in the second-level TLB (STLB) as well as performing a hardware page walk on an STLB miss.,> 0.1 & P; $issueTLB,4.4,MemoryTLB,,pub/v3.4,4,,,,,#Link: Linux THP pages; similar Windows link. +BE/Mem,,,,,Load_STLB_Hit,,"max( 0 , DTLB_Load - Load_STLB_Miss )",,,,,,,,,,,,,DTLB_Load - Load_STLB_Miss,,,,,,,,#NA,,Clocks_Estimated,"This metric roughly estimates the fraction of cycles where the (first level) DTLB was missed by load accesses, that later on hit in second-level TLB (STLB)",> 0.05 & P,4.2,MemoryTLB,,,5,,,,, +BE/Mem,,,,,Load_STLB_Miss,,,,,,,,,,,,,,,DTLB_LOAD_MISSES.WALK_ACTIVE / CLKS,,,,,,,,#NA,,Clocks_Calculated,"This metric estimates the fraction of cycles where the Second-level TLB (STLB) was missed by load accesses, performing a hardware page walk",> 0.05 & P,3.6,MemoryTLB,,,5,,,,, +BE/Mem,,,,Store_Fwd_Blk,,,,,,,,,,,,,,,,,,,,,,13 * LD_BLOCKS.STORE_FORWARD / CLKS,,,,Clocks_Estimated,This metric roughly estimates fraction of cycles when the memory subsystem had loads blocked since they could not forward data from earlier (in program order) overlapping stores. To streamline memory operations in the pipeline; a load can avoid waiting for memory if a prior in-flight store is writing the data that the load wants to read (store forwarding process). However; in some cases the load may be blocked for a significant time pending the store forward. For example; when the prior store is writing a smaller region than the load is reading.,> 0.1 & P,3.3,,1.0,,4,,,,, +BE/Mem,,,,Lock_Latency,,,MEM_INST_RETIRED.LOCK_LOADS*$PEBS / CLKS,,,,,,,"( 16 * max( 0 , MEM_INST_RETIRED.LOCK_LOADS_PS - L2_RQSTS.ALL_RFO ) + #Mem_Lock_St_Fraction * ( #Mem_L2_Store_Cost * L2_RQSTS.RFO_HIT + #ORO_Demand_RFO_C1 ) ) / CLKS",,,,,,"( 12 * max( 0 , MEM_INST_RETIRED.LOCK_LOADS_PS - L2_RQSTS.ALL_RFO ) + #Mem_Lock_St_Fraction * ( #Mem_L2_Store_Cost * L2_RQSTS.RFO_HIT + #ORO_Demand_RFO_C1 ) ) / CLKS",,,,,,#Mem_Lock_St_Fraction * #ORO_Demand_RFO_C1 / CLKS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.LOCK_LOADS_PS : MEM_INST_RETIRED.LOCK_LOADS_PS,Clocks,This metric represents fraction of cycles the CPU spent handling cache misses due to lock operations. Due to the microarchitecture handling of locks; they are classified as L1_Bound regardless of what memory source satisfied them.,> 0.2 & P; $issueRFO,4.3,Offcore,1.0,,4,,,,, +BE/Mem,,,,Split_Loads,,,"MEM_INST_RETIRED.SPLIT_LOADS*min($PEBS, Load_Miss_Real_Latency) / CLKS",,,,,,,,,,,,,,,,,Load_Miss_Real_Latency * LD_BLOCKS.NO_SR / CLKS,,13 * LD_BLOCKS.NO_SR / CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.SPLIT_LOADS_PS : MEM_INST_RETIRED.SPLIT_LOADS_PS,Clocks_Calculated,This metric estimates fraction of cycles handling memory load split accesses - load that cross 64-byte cache line boundary. ,> 0.2 & P,3.3,,1.0,,4,,,,Consider aligning data or hot structure fields. See the Optimization Manual for more details, +BE/Mem,,,,4K_Aliasing,,,,,,#NA,,,,,,,,,,,,,,,,LD_BLOCKS_PARTIAL.ADDRESS_ALIAS / CLKS,,,,Clocks_Estimated,This metric estimates how often memory load accesses were aliased by preceding stores (in program order) with a 4K address offset. False match is possible; which incur a few cycles load re-issue. However; the short re-issue duration is often hidden by the out-of-order core and HW optimizations; hence a user may safely ignore a high value of this metric unless it manages to propagate up into parent nodes of the hierarchy (e.g. to L1_Bound).,> 0.2 & P,3.4,,,,4,,,,Consider reducing independent loads/stores accesses with 4K offsets. See the Optimization Manual for more details, +BE/Mem,,,,FB_Full,,,,,,,,,,,L1D_PEND_MISS.FB_FULL / CLKS,,,,,,,Load_Miss_Real_Latency * L1D_PEND_MISS.FB_FULL:c1 / CLKS,,Load_Miss_Real_Latency * L1D_PEND_MISS.REQUEST_FB_FULL:c1 / CLKS,,Load_Miss_Real_Latency * L1D_PEND_MISS.FB_FULL:c1 / CLKS,,,,Clocks_Calculated,This metric does a *rough estimation* of how often L1D Fill Buffer unavailability limited additional L1D miss memory access requests to proceed. The higher the metric value; the deeper the memory hierarchy level the misses are satisfied from (metric values >1 are valid). Often it hints on approaching bandwidth limits (to L2 cache; L3 cache or external memory).,> 0.3; $issueBW; $issueSL; $issueSmSt,4.0,MemoryBW,,pub/v3.1,4,,,,See $issueBW and $issueSL hints. Avoid software prefetches if indeed memory BW limited., +BE/Mem,,,L2_Bound,,,,,,,( MEMORY_ACTIVITY.STALLS_L1D_MISS - MEMORY_ACTIVITY.STALLS_L2_MISS ) / CLKS,,,,,( #LOAD_L2_HIT / ( #LOAD_L2_HIT + L1D_PEND_MISS.FB_FULL_PERIODS ) ) * #L2_Bound_Ratio,,,,,( #LOAD_L2_HIT / ( #LOAD_L2_HIT + L1D_PEND_MISS.FB_FULL:c1 ) ) * #L2_Bound_Ratio,,( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CLKS,,,,( CYCLE_ACTIVITY.STALLS_L1D_PENDING - CYCLE_ACTIVITY.STALLS_L2_PENDING ) / CLKS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L2_HIT_PS : MEM_LOAD_RETIRED.L2_HIT_PS,Stalls,This metric estimates how often the CPU was stalled due to L2 cache accesses by loads. Avoiding cache misses (i.e. L1 misses/L2 hits) can improve the latency and increase performance.,> 0.05 & P,4.0,CacheHits;MemoryBound;TmaL3mem,,pub/v3,3,,,,, +BE/Mem,,,L3_Bound,,,,,,,( MEMORY_ACTIVITY.STALLS_L2_MISS - MEMORY_ACTIVITY.STALLS_L3_MISS ) / CLKS,,,,,,,,,,( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CLKS,,#Mem_L3_Hit_Fraction * CYCLE_ACTIVITY.STALLS_L2_MISS / CLKS,,,,,,#Mem_L3_Hit_Fraction * CYCLE_ACTIVITY.STALLS_L2_PENDING / CLKS,SNB/JKT/IVB/IVT ? MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L3_HIT_PS : MEM_LOAD_RETIRED.L3_HIT_PS,Stalls,This metric estimates how often the CPU was stalled due to loads accesses to L3 cache or contended with a sibling Core. Avoiding cache misses (i.e. L2 misses/L3 hits) can improve the latency and increase performance.,> 0.05 & P,3.3,CacheHits;MemoryBound;TmaL3mem,,pub/v3,3,,,,, +BE/Mem,,,,Contested_Accesses,,,"( MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS*min($PEBS, #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost) + MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD*min($PEBS, #Mem_XSNP_HitM_Cost - #Mem_L2_Hit_Cost) * #True_XSNP_HitM_Fraction ) * #FB_Factor / CLKS",,,,,,,,,,,,,( ( #Mem_XSNP_HitM_Cost - #Mem_L2_Hit_Cost ) * #LOAD_XSNP_HITM + ( #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost ) * #LOAD_XSNP_MISS ) * #FB_Factor / CLKS,,,,,,( #Mem_XSNP_HitM_Cost * #LOAD_XSNP_HITM + #Mem_XSNP_Hit_Cost * #LOAD_XSNP_MISS ) / CLKS,,,SNB/JKT ? #NA : IVB/IVT ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS_PS : SKL/SKX/CFL/CLX/CPX/CNL/ICL/ICX/RKL ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS_PS : MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD;MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to contested accesses. Contested accesses occur when data written by one Logical Processor are read by another Logical Processor on a different Physical Core. Examples of contested accesses include synchronizations such as locks; true data sharing such as modified locked variables; and false sharing.,> 0.05 & P; $issueSyncxn,4.2,DataSharing;Offcore;Snoop,1.0,,4,,,ZeroOk,, +BE/Mem,,,,Data_Sharing,,,"( MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD*min($PEBS, #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost) + MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD*min($PEBS, #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost) * ( 1 - #True_XSNP_HitM_Fraction ) ) * #FB_Factor / CLKS",,,,,,,,,,,,,( #Mem_XSNP_Hit_Cost - #Mem_L2_Hit_Cost ) * #LOAD_XSNP_HIT * #FB_Factor / CLKS,,,,,,#Mem_XSNP_Hit_Cost * #LOAD_XSNP_HIT / CLKS,,,SNB/JKT ? #NA : IVB/IVT ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT_PS : SKL/SKX/CFL/CLX/CPX/CNL/ICL/ICX/RKL ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS : MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to data-sharing accesses. Data shared by multiple Logical Processors (even just read shared) may cause increased access latency due to cache coherency. Excessive data sharing can drastically harm multithreaded performance.,> 0.05 & P; $issueSyncxn,4.2,Offcore;Snoop,1.0,,4,,,ZeroOk,, +BE/Mem,,,,L3_Hit_Latency,,,"MEM_LOAD_RETIRED.L3_HIT*min($PEBS, #Mem_XSNP_None_Cost - #Mem_L2_Hit_Cost ) * #FB_Factor / CLKS",,,,,,,,,,,,,( #Mem_XSNP_None_Cost - #Mem_L2_Hit_Cost ) * #LOAD_L3_HIT / CLKS,,,,,,#Mem_XSNP_None_Cost * #LOAD_L3_HIT / CLKS,,,SNB/JKT ? #NA : IVB/IVT ? MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L3_HIT_PS : MEM_LOAD_RETIRED.L3_HIT_PS,Clocks_Estimated,This metric estimates fraction of cycles with demand load accesses that hit the L3 cache under unloaded scenarios (possibly L3 latency limited). Avoiding private cache misses (i.e. L2 misses/L3 hits) will improve the latency; reduce contention with sibling physical cores and increase performance. Note the value of this node may overlap with its siblings.,> 0.1 & P; $issueLat; ~overlap,4.2,MemoryLat,1.0,,4,,,,, +BE/Mem,,,,SQ_Full,,,,,,( XQ.FULL_CYCLES + L1D_PEND_MISS.L2_STALLS ) / CLKS,,,,,L1D_PEND_MISS.L2_STALL / CLKS,,,,,,,,,,,#SQ_Full_Cycles / CORE_CLKS,,,,Clocks,This metric measures fraction of cycles where the Super Queue (SQ) was full taking into account all request-types and both hardware SMT threads (Logical Processors).,> 0.3 & P; $issueBW,4.3,MemoryBW;Offcore,,,4,,,,, +BE/Mem,,,HBM_Bound,,,,,#MEM_Bound_Ratio if #HBM_Only else #MEM_Bound_Ratio * OCR.DEMAND_DATA_RD.PMM / OCR.READS_TO_CORE.L3_MISS,,,,,,,,,,,,,,,,,,,,#NA,,Stalls,This metric estimates how often the CPU was stalled due to High Bandwidth Memory (HBM) accesses by loads.,> 0.1 & P,4.7,MemoryBound;Offcore;Server;TmaL3mem,,pub/v4.6,3,,,,, +BE/Mem,,,DRAM_Bound,,,,,#NA if #HBM_Only else #MEM_Bound_Ratio - HBM_Bound,,,,,,,,,( #MEM_Bound_Ratio - PMM_Bound ) if #PMM_App_Direct else #MEM_Bound_Ratio,,,#MEM_Bound_Ratio,,( 1 - #Mem_L3_Hit_Fraction ) * CYCLE_ACTIVITY.STALLS_L2_MISS / CLKS,,,,,,( 1 - #Mem_L3_Hit_Fraction ) * CYCLE_ACTIVITY.STALLS_L2_PENDING / CLKS,SNB ? MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS : IVB/IVT/JKT ? MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS : HSW/HSX/BDW/BDX ? MEM_LOAD_UOPS_RETIRED.L3_MISS_PS : MEM_LOAD_RETIRED.L3_MISS_PS,Stalls,This metric estimates how often the CPU was stalled on accesses to external memory (DRAM) by loads. Better caching can improve the latency and increase performance.,> 0.1 & P,4.7,MemoryBound;TmaL3mem,1.0,pub/v3,3,,,,, +BE/Mem,,,,MEM_Bandwidth,,,,,,,,,,,,,,,,,,,,,,,,#ORO_DRD_BW_Cycles / CLKS,,Clocks,This metric estimates fraction of cycles where the core's performance was likely hurt due to approaching bandwidth limits of external memory - DRAM ([SPR-HBM] and/or HBM). The underlying heuristic assumes that a similar off-core traffic is generated by all IA cores. This metric does not aggregate non-data-read requests by this logical processor; requests from other IA Logical Processors/Physical Cores/sockets; or other non-IA devices like GPU; hence the maximum external memory bandwidth limits may or may not be approached when this metric is flagged (see Uncore counters for that).,> 0.2 & P; $issueBW,4.7,MemoryBW;Offcore,,pub/v3,4,,,,"Improve data accesses to reduce cacheline transfers from/to memory. Examples: 1) Consume all bytes of a each cacheline before it is evicted (e.g. reorder structure elements and split non-hot ones), 2) merge computed-limited with BW-limited loops, 3) NUMA optimizations in multi-socket system. Note: software prefetches will not help BW-limited application.",#Link: what is NUMA article +BE/Mem,,,,,MBA_Stalls,,,,INT_MISC.MBA_STALLS / CLKS,,,,,,,,,,,,,,,,,,,,,Clocks,This metric estimates fraction of cycles where the core's performance was likely hurt due to memory bandwidth Allocation feature (RDT's memory bandwidth throttling).,> 0.1 & P,4.6,MemoryBW;Offcore;Server,,,5,,,ZeroOk,, +BE/Mem,,,,MEM_Latency,,,,,,,,,,,,,,,,,,,,,,,,#ORO_DRD_Any_Cycles / CLKS - MEM_Bandwidth,,Clocks,This metric estimates fraction of cycles where the performance was likely hurt due to latency from external memory - DRAM ([SPR-HBM] and/or HBM). This metric does not aggregate requests from other Logical Processors/Physical Cores/sockets (see Uncore counters for that).,> 0.1 & P; $issueLat,4.7,MemoryLat;Offcore,,pub/v3,4,,,,"Improve data accesses or interleave them with compute. Examples: 1) Data layout re-structuring, 2) Software Prefetches (also through the compiler).",#Link: Data re-layout; SW prefetching; AoS vs. SoA articles. +BE/Mem,,,,,Local_MEM,,,,,,,,( #Mem_Local_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS * #FB_Factor / CLKS,,,,,,( #Mem_Local_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS * #FB_Factor / CLKS,,,,,,#Mem_Local_DRAM_Cost * #LOAD_LCL_MEM / CLKS,,,#NA,SNB/JKT/IVB/HSW/BDW/SKL/KBL/KBLR/CFL/CNL/ICL/TGL/RKL/ADL/MTL ? #NA : IVT ? MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS : HSX/BDX ? MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM_PS : MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling loads from local memory. Caching will improve the latency and increase performance.,> 0.1 & P,4.7,Server,1.0,,5,,,,, +BE/Mem,,,,,Remote_MEM,,,,,,,,( #Mem_Remote_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS * #FB_Factor / CLKS,,,,,,( #Mem_Remote_DRAM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS * #FB_Factor / CLKS,,,,,,#Mem_Remote_DRAM_Cost * #LOAD_RMT_MEM / CLKS,,,#NA,SNB/JKT/IVB/HSW/BDW/SKL/KBL/KBLR/CFL/CNL/ICL/TGL/RKL/ADL/MTL ? #NA : IVT ? MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM_PS : HSX/BDX ? MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM_PS : MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling loads from remote memory. This is caused often due to non-optimal NUMA allocations. #link to NUMA article,> 0.1 & P,4.7,Server;Snoop,1.0,,5,,,,, +BE/Mem,,,,,Remote_Cache,,,,,,,,,,,,,,( ( #Mem_Remote_HitM_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS + ( #Mem_Remote_Fwd_Cost - #Mem_XSNP_None_Cost ) * MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS ) * #FB_Factor / CLKS,,,,,,( #Mem_Remote_HitM_Cost * #LOAD_RMT_HITM + #Mem_Remote_Fwd_Cost * #LOAD_RMT_FWD ) / CLKS,,,#NA,SNB/JKT/IVB/HSW/BDW/SKL/KBL/KBLR/CFL/CNL/ICL/TGL/RKL/ADL/MTL ? #NA : IVT ? MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD_PS : HSX/BDX ? MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD_PS : MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS,Clocks_Estimated,This metric estimates fraction of cycles while the memory subsystem was handling loads from remote cache in other sockets including synchronizations issues. This is caused often due to non-optimal NUMA allocations. #link to NUMA article,> 0.05 & P; $issueSyncxn,4.2,Offcore;Server;Snoop,1.0,,5,,,,, +BE/Mem,,,PMM_Bound,,,,,,,,,,,,,,( ( ( 1 - #Mem_DDR_Hit_Fraction ) * #MEM_Bound_Ratio ) if ( #OneMillion * ( MEM_LOAD_L3_MISS_RETIRED.REMOTE_PMM_PS + MEM_LOAD_RETIRED.LOCAL_PMM_PS ) > MEM_LOAD_RETIRED.L1_MISS_PS ) else 0 ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,Stalls,"This metric roughly estimates (based on idle latencies) how often the CPU was stalled on accesses to external 3D-Xpoint (Crystal Ridge, a.k.a. IXP) memory by loads, PMM stands for Persistent Memory Module. ",> 0.1 & P,3.5,MemoryBound;Server;TmaL3mem,1.0,pub/v3.5,3,,,ZeroOk,Consider moving data-structure from AEP to DDR memory for better latency/bandwidth,#Link: Opt Guide CR section +BE/Mem,,,Store_Bound,,,,,,,,,,,EXE_ACTIVITY.BOUND_ON_STORES / CLKS,EXE_ACTIVITY.BOUND_ON_STORES:c1 / CLKS,,,,,EXE_ACTIVITY.BOUND_ON_STORES / CLKS,,,,,,,,RESOURCE_STALLS.SB / CLKS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.ALL_STORES_PS : MEM_INST_RETIRED.ALL_STORES_PS,Stalls,This metric estimates how often CPU was stalled due to RFO store memory accesses; RFO store issue a read-for-ownership request before the write. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should RFO stores be a bottleneck.,> 0.2 & P,4.2,MemoryBound;TmaL3mem,,pub/v3,3,,,,, +BE/Mem,,,,Store_Latency,,,,,,,,,,,,,,,,,,,,,,( #Store_L2_Hit_Cycles + ( 1 - #Mem_Lock_St_Fraction ) * #ORO_Demand_RFO_C1 ) / CLKS,,#NA,,Clocks_Estimated,This metric estimates fraction of cycles the CPU spent handling L1D store misses. Store accesses usually less impact out-of-order core performance; however; holding resources for longer time can lead into undesired implications (e.g. contention on L1D fill-buffer entries - see FB_Full),> 0.1 & P; $issueRFO; $issueSL; ~overlap,3.3,MemoryLat;Offcore,1.0,,4,,,,Consider to avoid/reduce unnecessary (or easily load-able/computable) memory store., +BE/Mem,,,,False_Sharing,,,,,,,,,,#Mem_XSNP_HitM_Cost * OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM / CLKS,,,,,( #Mem_Remote_HitM_Cost * #OCR_all_rfo_l3_miss_remote_hitm + #Mem_XSNP_HitM_Cost * #OCR_all_rfo_l3_hit_snoop_hitm ) / CLKS,#Mem_XSNP_HitM_Cost * #OCR_all_rfo_l3_hit_snoop_hitm / CLKS,( #Mem_Remote_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM + #Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE ) / CLKS,#Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM / CLKS,( #Mem_Remote_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM + #Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE ) / CLKS,#Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE / CLKS,( #Mem_Remote_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM + #Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE ) / CLKS,#Mem_XSNP_HitM_Cost * OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE / CLKS,,,SNB/JKT ? #NA : IVB ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE : IVT ? MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE;OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM : HSW ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE : BDW ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM : HSX/BDX ? MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS;MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.LLC_HIT.HITM_OTHER_CORE;OFFCORE_RESPONSE.DEMAND_RFO.LLC_MISS.REMOTE_HITM : SKX ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE : CLX/CPX ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;OCR.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE : SKL/KBL/KBLR/CFL/CNL ? MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS;OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM : OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM,Clocks_Estimated,This metric roughly estimates how often CPU was handling synchronizations due to False Sharing. False Sharing is a multithreading hiccup; where multiple Logical Processors contend on different data-elements mapped into the same cache line. ,> 0.05 & P; $issueSyncxn,4.1,DataSharing;Offcore;Snoop,1.0,,4,,,ZeroOk,False Sharing can be easily avoided by padding to make Logical Processors access different lines., +BE/Mem,,,,Split_Stores,,,"MEM_INST_RETIRED.SPLIT_STORES*min($PEBS, 1) / CLKS",,,,,,,,,,,,,MEM_INST_RETIRED.SPLIT_STORES_PS / CORE_CLKS,,,,,,2 * MEM_UOPS_RETIRED.SPLIT_STORES_PS / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.SPLIT_STORES_PS : MEM_INST_RETIRED.SPLIT_STORES_PS,Core_Utilization,This metric represents rate of split store accesses. Consider aligning your data to the 64-byte cache line granularity.,> 0.2 & P; $issueSpSt,4.5,,,,4,,,,, +BE/Mem,,,,Streaming_Stores,,,,,,,,,,9 * OCR.STREAMING_WR.ANY_RESPONSE / CLKS,,,,,,,,,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : OCR.STREAMING_WR.ANY_RESPONSE,Clocks_Estimated,This metric estimates how often CPU was stalled due to Streaming store memory accesses; Streaming store optimize out a read request required by RFO stores. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should Streaming stores be a bottleneck.,> 0.2 & P; $issueSmSt,4.2,MemoryBW;Offcore,1.0,,4,,,,, +BE/Mem,,,,DTLB_Store,,,"MEM_INST_RETIRED.STLB_HIT_STORES*min($PEBS, #Mem_STLB_Hit_Cost) / CLKS + Store_STLB_Miss",,,,,,,,,,,,,( #Mem_STLB_Hit_Cost * DTLB_STORE_MISSES.STLB_HIT:c1 + DTLB_STORE_MISSES.WALK_ACTIVE ) / CORE_CLKS,,( #Mem_STLB_Hit_Cost * DTLB_STORE_MISSES.STLB_HIT + DTLB_STORE_MISSES.WALK_DURATION:c1 + 7 * DTLB_STORE_MISSES.WALK_COMPLETED ) / CLKS,,,,( #Mem_STLB_Hit_Cost * DTLB_STORE_MISSES.STLB_HIT + DTLB_STORE_MISSES.WALK_DURATION ) / CLKS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? MEM_UOPS_RETIRED.STLB_MISS_STORES_PS : MEM_INST_RETIRED.STLB_MISS_STORES_PS,Clocks_Estimated,This metric roughly estimates the fraction of cycles spent handling first-level data TLB store misses. As with ordinary data caching; focus on improving data locality and reducing working-set size to reduce DTLB overhead. Additionally; consider using profile-guided optimization (PGO) to collocate frequently-used data on the same page. Try using larger page sizes for large amounts of frequently-used data.,> 0.05 & P; $issueTLB,4.3,MemoryTLB,1.0,,4,,,,, +BE/Mem,,,,,Store_STLB_Hit,,"max( 0 , DTLB_Store - Store_STLB_Miss )",,,,,,,,,,,,,DTLB_Store - Store_STLB_Miss,,,,,,,,#NA,,Clocks_Estimated,"This metric roughly estimates the fraction of cycles where the TLB was missed by store accesses, hitting in the second-level TLB (STLB)",> 0.05 & P,3.6,MemoryTLB,1.0,,5,,,,, +BE/Mem,,,,,Store_STLB_Miss,,,,,,,,,,,,,,,DTLB_STORE_MISSES.WALK_ACTIVE / CORE_CLKS,,,,,,,,#NA,,Clocks_Calculated,"This metric estimates the fraction of cycles where the STLB was missed by store accesses, performing a hardware page walk",> 0.05 & P,3.6,MemoryTLB,1.0,,5,,,,, +BE/Core,,Core_Bound,,,,,,,,,,,,"max( 0 , Backend_Bound - Memory_Bound )",,,,,,,,,,,,,,Backend_Bound - Memory_Bound,,Slots,This metric represents fraction of slots where Core non-memory issues were of a bottleneck. Shortage in hardware compute resources; or dependencies in software's instructions are both categorized under Core Bound. Hence it may indicate the machine ran out of an out-of-order resource; certain execution units are overloaded or dependencies in program's data- or instruction-flow are limiting the performance (e.g. FP-chained long-latency arithmetic operations).,> 0.1 & P,4.2,Backend;TmaL2;Compute,,pub/v3,2,,,,Tip: consider Port Saturation analysis as next step., +BE/Core,,,Divider,,,,,,,ARITH.DIV_ACTIVE / CLKS,,,,,,,,,,ARITH.DIVIDER_ACTIVE / CLKS,,ARITH.FPU_DIV_ACTIVE / CORE_CLKS,,10 * ARITH.DIVIDER_UOPS / CORE_CLKS,,,,ARITH.FPU_DIV_ACTIVE / CORE_CLKS,MTL ? ARITH.DIV_ACTIVE : SNB/JKT/IVB/IVT/BDW/BDX ? ARITH.FPU_DIV_ACTIVE : HSW/HSX ? ARITH.DIVIDER_UOPS : ARITH.DIVIDER_ACTIVE,Clocks,This metric represents fraction of cycles where the Divider unit was active. Divide and square root instructions are performed by the Divider unit and can take considerably longer latency than integer or Floating Point addition; subtraction; or multiplication.,> 0.2 & P,4.5,,,pub/v3,3,,,,, +BE/Core,,,Serializing_Operation,,,,,,,RESOURCE_STALLS.SCOREBOARD / CLKS + C02_WAIT,,,,RESOURCE_STALLS.SCOREBOARD / CLKS,RESOURCE_STALLS.SCOREBOARD / CLKS,,,,,PARTIAL_RAT_STALLS.SCOREBOARD / CLKS,,,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : SKL/KBL/KBLR/CFL/SKX/CLX/CPX ? PARTIAL_RAT_STALLS.SCOREBOARD : RESOURCE_STALLS.SCOREBOARD,Clocks,This metric represents fraction of cycles the CPU issue-pipeline was stalled due to serializing operations. Instructions like CPUID; WRMSR or LFENCE serialize the out-of-order execution which may limit performance.,> 0.1 & P; $issueSO,4.7,PortsUtil,,pub/v3.4,3,,,,, +BE/Core,,,,Slow_Pause,,,,,,CPU_CLK_UNHALTED.PAUSE / CLKS,,,37 * MISC_RETIRED.PAUSE_INST / CLKS,140 * MISC_RETIRED.PAUSE_INST / CLKS,,174 * ROB_MISC_EVENTS.PAUSE_INST / CLKS,40 * ROB_MISC_EVENTS.PAUSE_INST / CLKS,140 * ROB_MISC_EVENTS.PAUSE_INST / CLKS,,,,,,,,,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/SKX ? #NA : KBLR/CFL/CLX/CPX ? ROB_MISC_EVENTS.PAUSE_INST : CNL/ICL/ICX/RKL/TGL ? MISC_RETIRED.PAUSE_INST : CPU_CLK_UNHALTED.PAUSE_INST,Clocks,This metric represents fraction of cycles the CPU was stalled due to PAUSE Instructions.,> 0.05 & P,4.3,,,,6,,,,, +BE/Core,,,,C01_WAIT,,,,,,CPU_CLK_UNHALTED.C01 / CLKS,,,,,,,,,,,,,,,,,,,,Clocks,This metric represents fraction of cycles the CPU was stalled due staying in C0.1 power-performance optimized state (Faster wakeup time; Smaller power savings).,> 0.05 & P,4.6,C0Wait,,,6,,,ZeroOk,, +BE/Core,,,,C02_WAIT,,,,,,CPU_CLK_UNHALTED.C02 / CLKS,,,,,,,,,,,,,,,,,,,,Clocks,This metric represents fraction of cycles the CPU was stalled due staying in C0.2 power-performance optimized state (Slower wakeup time; Larger power savings).,> 0.05 & P,4.6,C0Wait,,,4,,,ZeroOk,, +BE/Core,,,,Memory_Fence,,,,,,13 * MISC2_RETIRED.LFENCE / CLKS,,,,,,,,,,,,,,,,,,,,Clocks,This metric represents fraction of cycles the CPU was stalled due to LFENCE Instructions.,> 0.05 & P,4.3,,1.0,,6,,,,, +BE/Core,,,AMX_Busy,,,,,,EXE.AMX_BUSY / CORE_CLKS,,,,,,,,,,,,,,,,,,,,,Core_Clocks,This metric estimates fraction of cycles where the Advanced Matrix eXtensions (AMX) execution engine was busy with tile (arithmetic) operations,> 0.5 & P,4.7,Compute;HPC;Server,,pub/v4.6,3,,,,, +BE/Core,,,Ports_Utilization,,,,,,,#Core_Bound_Cycles / CLKS if ( ARITH.DIV_ACTIVE < ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ) ) else #Few_Uops_Executed_Threshold / CLKS,,,,,,,,,,#Core_Bound_Cycles / CLKS if ( ARITH.DIVIDER_ACTIVE < ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ) ) else #Few_Uops_Executed_Threshold / CLKS,,( #Backend_Bound_Cycles - RESOURCE_STALLS.SB - CYCLE_ACTIVITY.STALLS_MEM_ANY ) / CLKS,,,,,,( #Backend_Bound_Cycles - RESOURCE_STALLS.SB - #STALLS_MEM_ANY ) / CLKS,,Clocks,This metric estimates fraction of cycles the CPU performance was potentially limited due to Core computation issues (non divider-related). Two distinct categories can be attributed into this metric: (1) heavy data-dependency among contiguous instructions would manifest in this metric - such cases are often referred to as low Instruction Level Parallelism (ILP). (2) Contention on some hardware execution unit other than Divider. For example; when there are too many multiply operations.,> 0.15 & P,4.7,PortsUtil,,pub/v3,3,,,,Loop Vectorization -most compilers feature auto-Vectorization options today- reduces pressure on the execution ports as multiple elements are calculated with same uop., +BE/Core,,,,Ports_Utilized_0,,,"max( ( EXE_ACTIVITY.3_PORTS_UTIL:u0x80 + RS.EMPTY_RESOURCE ) / CLKS , 1 ) * ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ) / CLKS",,,( EXE_ACTIVITY.3_PORTS_UTIL:u0x80 + RS.EMPTY:u1 ) / CLKS * ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ) / CLKS,,,,( EXE_ACTIVITY.3_PORTS_UTIL:u0x80 + Core_Bound * RS_EVENTS.EMPTY_CYCLES ) / CLKS * ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ) / CLKS,,,,,,( EXE_ACTIVITY.EXE_BOUND_0_PORTS + Core_Bound * RS_EVENTS.EMPTY_CYCLES ) / CLKS * ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ) / CLKS,,,,,,#Cycles_0_Ports_Utilized / CORE_CLKS,,#NA,,Clocks,"This metric represents fraction of cycles CPU executed no uops on any execution port (Logical Processor cycles since ICL, Physical Core cycles otherwise). Long-latency instructions like divides may contribute to this metric.",> 0.2 & P,4.7,PortsUtil,,,4,,,,Check assembly view and Appendix C in Optimization Manual to find out instructions with say 5 or more cycles latency.,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +BE/Core,,,,,Mixing_Vectors,,,,,160 * ASSISTS.SSE_AVX_MIX / CLKS,,,,,,,,,,UOPS_ISSUED.VECTOR_WIDTH_MISMATCH / UOPS_ISSUED.ANY,,,,,,,,#NA,,Clocks,This metric estimates penalty in terms of percentage of([SKL+] injected blend uops out of all Uops Issued -- the Count Domain; [ADL+] cycles). Usually a Mixing_Vectors over 5% is worth investigating. Read more in Appendix B1 of the Optimizations Guide for this topic.,> 0.05; $issueMV,4.6,,1.0,,5,,,,, +BE/Core,,,,Ports_Utilized_1,,,,,,,,,,EXE_ACTIVITY.1_PORTS_UTIL / CLKS,,,,,,,,,,,,#Cycles_1_Port_Utilized / CORE_CLKS,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : EXE_ACTIVITY.1_PORTS_UTIL,Clocks,"This metric represents fraction of cycles where the CPU executed total of 1 uop per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). This can be due to heavy data-dependency among software instructions; or over oversubscribing a particular hardware resource. In some other cases with high 1_Port_Utilized and L1_Bound; this metric can point to L1 data-cache latency bottleneck that may not necessarily manifest with complete execution starvation (due to the short L1 latency e.g. walking a linked list) - looking at the assembly can be helpful.",> 0.2 & P; $issueL1,4.0,PortsUtil,,,4,,,,, +BE/Core,,,,Ports_Utilized_2,,,,,,,,,,EXE_ACTIVITY.2_PORTS_UTIL / CLKS,,,,,,,,,,,,#Cycles_2_Ports_Utilized / CORE_CLKS,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : EXE_ACTIVITY.2_PORTS_UTIL,Clocks,"This metric represents fraction of cycles CPU executed total of 2 uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). Loop Vectorization -most compilers feature auto-Vectorization options today- reduces pressure on the execution ports as multiple elements are calculated with same uop.",> 0.15 & P; $issue2P,4.2,PortsUtil,,,4,,,,, +BE/Core,,,,Ports_Utilized_3m,,,,,,,,,,UOPS_EXECUTED.CYCLES_GE_3 / CLKS,,,,,,,,,,,,#Cycles_3m_Ports_Utilized / CORE_CLKS,,#NA,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : UOPS_EXECUTED.CYCLES_GE_3,Clocks,"This metric represents fraction of cycles CPU executed total of 3 or more uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise).",> 0.4 & P,4.7,PortsUtil,,,4,,,,, +BE/Core,,,,,ALU_Op_Utilization,,,,,( UOPS_DISPATCHED.PORT_0 + UOPS_DISPATCHED.PORT_1 + UOPS_DISPATCHED.PORT_5_11 + UOPS_DISPATCHED.PORT_6 ) / ( 5 * CORE_CLKS ),,,,( UOPS_DISPATCHED.PORT_0 + UOPS_DISPATCHED.PORT_1 + UOPS_DISPATCHED.PORT_5 + UOPS_DISPATCHED.PORT_6 ) / ( 4 * CORE_CLKS ),,,,,,,,,,( UOPS_DISPATCHED_PORT.PORT_0 + UOPS_DISPATCHED_PORT.PORT_1 + UOPS_DISPATCHED_PORT.PORT_5 + UOPS_DISPATCHED_PORT.PORT_6 ) / ( 4 * CORE_CLKS ),,( UOPS_DISPATCHED_PORT.PORT_0 + UOPS_DISPATCHED_PORT.PORT_1 + UOPS_DISPATCHED_PORT.PORT_5 ) / ( 3 * CORE_CLKS ),,,,Core_Execution,This metric represents Core fraction of cycles CPU dispatched uops on execution ports for ALU operations.,> 0.4,4.3,,,,5,,,,, +BE/Core,,,,,,Port_0,,,,,,,,UOPS_DISPATCHED.PORT_0 / CORE_CLKS,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_0 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_0 : UOPS_DISPATCHED.PORT_0,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 0 ([SNB+] ALU; [HSW+] ALU and 2nd branch),> 0.6; $issue2P,4.2,Compute,,,6,,,,, +BE/Core,,,,,,Port_1,,,,,,,,UOPS_DISPATCHED.PORT_1 / CORE_CLKS,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_1 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_1 : UOPS_DISPATCHED.PORT_1,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 1 (ALU),> 0.6; $issue2P,4.2,,,,6,,,,, +BE/Core,,,,,,Port_5,,,,#NA,,,,UOPS_DISPATCHED.PORT_5 / CORE_CLKS,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_5 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_5 : ICL/ICX/TGL/RKL ? UOPS_DISPATCHED.PORT_5 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 5 ([SNB+] Branches and ALU; [HSW+] ALU),> 0.6; $issue2P,4.2,,,,6,,,,See section 'Handling Port 5 Pressure' in Optimization Manual:,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +BE/Core,,,,,,Port_6,,,,,,,,UOPS_DISPATCHED.PORT_6 / CORE_CLKS,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_6 / CORE_CLKS,,,,#NA,SNB/JKT/IVB/IVT ? #NA : HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_6 : UOPS_DISPATCHED.PORT_6,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 6 ([HSW+] Primary Branch and simple ALU),> 0.6; $issue2P,4.6,,,,6,,,,, +BE/Core,,,,,Load_Op_Utilization,,,,,UOPS_DISPATCHED.PORT_2_3_10 / ( 3 * CORE_CLKS ),,,,UOPS_DISPATCHED.PORT_2_3 / ( 2 * CORE_CLKS ),,,,,,,,,,( UOPS_DISPATCHED_PORT.PORT_2 + UOPS_DISPATCHED_PORT.PORT_3 + UOPS_DISPATCHED_PORT.PORT_7 - UOPS_DISPATCHED_PORT.PORT_4 ) / ( 2 * CORE_CLKS ),,( UOPS_DISPATCHED_PORT.PORT_2 + UOPS_DISPATCHED_PORT.PORT_3 - UOPS_DISPATCHED_PORT.PORT_4 ) / ( 2 * CORE_CLKS ),,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : ICL/ICX/TGL/RKL ? UOPS_DISPATCHED.PORT_2_3 : UOPS_DISPATCHED.PORT_2_3_10,Core_Execution,This metric represents Core fraction of cycles CPU dispatched uops on execution port for Load operations,> 0.6,4.3,,,,5,,,,, +BE/Core,,,,,,Port_2,,,,,,,,#NA,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_2 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_2 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 2 ([SNB+]Loads and Store-address; [ICL+] Loads),> 0.6,3.4,,,,6,,,,, +BE/Core,,,,,,Port_3,,,,,,,,#NA,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_3 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_3 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 3 ([SNB+]Loads and Store-address; [ICL+] Loads),> 0.6,3.4,,,,6,,,,, +BE/Core,,,,,Store_Op_Utilization,,,,,,,,,( UOPS_DISPATCHED.PORT_4_9 + UOPS_DISPATCHED.PORT_7_8 ) / ( 4 * CORE_CLKS ),,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_4 / CORE_CLKS,,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? #NA : UOPS_DISPATCHED.PORT_7_8,Core_Execution,This metric represents Core fraction of cycles CPU dispatched uops on execution port for Store operations,> 0.6,4.1,,,,5,,,,, +BE/Core,,,,,,Port_4,,,,,,,,#NA,,,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_4 / CORE_CLKS,,,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_4 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 4 (Store-data),> 0.6; $issueSpSt,3.4,,,,6,,,,, +BE/Core,,,,,,Port_7,,,,,,,,#NA,,,,,,,,,,UOPS_DISPATCHED_PORT.PORT_7 / CORE_CLKS,,,,#NA,SNB/JKT/IVB/IVT ? #NA : HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_DISPATCHED_PORT.PORT_7 : #NA,Core_Clocks,This metric represents Core fraction of cycles CPU dispatched uops on execution port 7 ([HSW+]simple Store-address),> 0.6,3.4,,,,6,,,,, +RET,Retiring,,,,,,,,,,,,,PERF_METRICS.RETIRING / #PERF_METRICS_SUM,,,,,,,,,,,,,,#Retired_Slots / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL ? UOPS_RETIRED.RETIRE_SLOTS : UOPS_RETIRED.SLOTS,Slots,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. ,(> 0.7 | Heavy_Operations),4.3,TmaL1,,pub/v3,1,,,,A high Retiring value for non-vectorized code may be a good hint for programmer to consider vectorizing his code. Doing so essentially lets more computations be done without significantly increasing number of instructions thus improving the performance., +RET,,Light_Operations,,,,,,,,,,,,"max( 0 , Retiring - Heavy_Operations )",,,,,,,,,,,,,,Retiring - Heavy_Operations,INST_RETIRED.PREC_DIST,Slots,This metric represents fraction of slots where the CPU was retiring light-weight operations -- instructions that require no more than one uop (micro-operation). This correlates with total number of instructions used by the program. A uops-per-instruction (see UopPI metric) ratio of 1 or less should be expected for decently optimized code running on Intel Core/Xeon products. While this often indicates efficient X86 instructions were executed; high value does not necessarily mean better performance cannot be achieved. ([ICL+] Note this may undercount due to approximation using indirect events; [ADL+] .),> 0.6,4.6,Retire;TmaL2,,pub/v3,2,,,,Focus on techniques that reduce instruction count or result in more efficient instructions generation such as vectorization, #Link: auto-Vectorization options of Intel/other compilers. +RET,,,FP_Arith,,,,,,X87_Use + FP_Scalar + FP_Vector,,,,,,,,,,,,,X87_Use + FP_Scalar + FP_Vector,,#NA,,,,X87_Use + FP_Scalar + FP_Vector,,Uops,"This metric represents overall arithmetic floating-point (FP) operations fraction the CPU has executed (retired). Note this metric's value may exceed its parent due to use of ""Uops"" CountDomain and FMA double-counting.",> 0.2 & P,4.7,HPC,,pub/v3,3,,,,, +RET,,,,X87_Use,,,,,,,,,,,,,,,,Retiring * UOPS_EXECUTED.X87 / UOPS_EXECUTED.THREAD,,INST_RETIRED.X87 * UopPI / #Retired_Slots,,#NA,,#Retired_Slots * FP_COMP_OPS_EXE.X87 / UOPS_EXECUTED.THREAD,,#Retired_Slots * FP_COMP_OPS_EXE.X87 / UOPS_DISPATCHED.THREAD,,Uops,This metric serves as an approximation of legacy x87 usage. It accounts for instructions beyond X87 FP arithmetic operations; hence may be used as a thermometer to avoid X87 high usage and preferably upgrade to modern ISA. See Tip under Tuning Hint.,> 0.1 & P,4.6,Compute,,,4,,,,Tip: consider compiler flags to generate newer AVX (or SSE) instruction sets; which typically perform better and feature vectors., +RET,,,,FP_Scalar,,,,,,,,,,,,,,,,,,#FP_Arith_Scalar / #Retired_Slots,,#NA,,#FP_Arith_Scalar / UOPS_EXECUTED.THREAD,,#FP_Arith_Scalar / UOPS_DISPATCHED.THREAD,,Uops,This metric approximates arithmetic floating-point (FP) scalar uops fraction the CPU has retired. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.5,Compute;Flops,,pub/v3,4,,,,Investigate what limits (compiler) generation of vector code., +RET,,,,FP_Vector,,,,,,,,,,,,,,,,,,#FP_Arith_Vector / #Retired_Slots,,#NA,,#FP_Arith_Vector / UOPS_EXECUTED.THREAD,,#FP_Arith_Vector / UOPS_DISPATCHED.THREAD,,Uops,This metric approximates arithmetic floating-point (FP) vector uops fraction the CPU has retired aggregated across all vector widths. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.6,Compute;Flops,1.0,pub/v3,4,,,,Check if vector width is expected , +RET,,,,,FP_Vector_128b,,,,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128B_PACKED_HALF ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ) / #Retired_Slots,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128BIT_PACKED_BF16 ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ) / #Retired_Slots,,#NA,,( FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE + FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE ) / UOPS_EXECUTED.THREAD,,( FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE + FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE ) / UOPS_DISPATCHED.THREAD,,Uops,This metric approximates arithmetic FP vector uops fraction the CPU has retired for 128-bit wide vectors. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.6,Compute;Flops,1.0,,5,,,,Try to exploit wider vector length, +RET,,,,,FP_Vector_256b,,,,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256B_PACKED_HALF ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / #Retired_Slots,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256BIT_PACKED_BF16 ) / #Retired_Slots,,,,,,( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / #Retired_Slots,,#NA,,( SIMD_FP_256.PACKED_DOUBLE + SIMD_FP_256.PACKED_SINGLE ) / UOPS_EXECUTED.THREAD,,( SIMD_FP_256.PACKED_DOUBLE + SIMD_FP_256.PACKED_SINGLE ) / UOPS_DISPATCHED.THREAD,,Uops,This metric approximates arithmetic FP vector uops fraction the CPU has retired for 256-bit wide vectors. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.6,Compute;Flops,1.0,,5,,,,Try to exploit wider vector length, +RET,,,,,FP_Vector_512b,,,,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512B_PACKED_HALF ) / #Retired_Slots,#NA,,,,,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / #Retired_Slots,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512BIT_PACKED_BF16 ) / #Retired_Slots,,,( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / #Retired_Slots,,,,,,,,,#NA,,Uops,This metric approximates arithmetic FP vector uops fraction the CPU has retired for 512-bit wide vectors. May overcount due to FMA double counting.,> 0.1 & P; $issue2P,4.4,Compute;Flops,1.0,,5,,,ZeroOk,, +RET,,,,FP_AMX,,,,,#NA,,,,,,,,,,,,,,,,,,,,,Uops_Estimated,"This metric approximates arithmetic floating-point (FP) matrix uops fraction the CPU has retired (aggregated across all supported FP datatypes in AMX engine). Refer to AMX_Busy and GFLOPs metrics for actual AMX utilization and FP performance, resp.",> 0.1 & P,4.7,Compute;Flops;HPC;Pipeline;Server,,pub/v4.6,4,,,ZeroOk,, +RET,,,Int_Operations,,,,,,Int_Vector_128b + Int_Vector_256b,Int_Vector_128b + Int_Vector_256b,,,,,,,,,,,,,,,,,,,,Uops,"This metric represents overall Integer (Int) select operations fraction the CPU has executed (retired). Vector/Matrix Int operations and shuffles are counted. Note this metric's value may exceed its parent due to use of ""Uops"" CountDomain.",> 0.1 & P,4.7,Pipeline,,,3,,,,, +RET,,,,Int_Vector_128b,,,,,,( INT_VEC_RETIRED.ADD_128 + INT_VEC_RETIRED.VNNI_128 ) / #Retired_Slots,,,,,,,,,,,,,,,,,,,,Uops,This metric represents 128-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired.,> 0.1 & P; $issue2P,4.4,Compute;IntVector;Pipeline,,,3,,,,, +RET,,,,Int_Vector_256b,,,,,,( INT_VEC_RETIRED.ADD_256 + INT_VEC_RETIRED.MUL_256 + INT_VEC_RETIRED.VNNI_256 ) / #Retired_Slots,,,,,,,,,,,,,,,,,,,,Uops,This metric represents 256-bit vector Integer ADD/SUB/SAD/MUL or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired.,> 0.1 & P; $issue2P,4.7,Compute;IntVector;Pipeline,,,3,,,,, +RET,,,,Int_AMX,,,,,#NA,,,,,,,,,,,,,,,,,,,,,Uops_Estimated,"This metric approximates arithmetic Integer (Int) matrix uops fraction the CPU has retired (aggregated across all supported Int datatypes in AMX engine). Refer to AMX_Busy and TIOPs metrics for actual AMX utilization and Int performance, resp.",> 0.1 & P,4.7,Compute;HPC;IntVector;Pipeline;Server,,pub/v4.6,3,,,ZeroOk,, +RET,,,Memory_Operations,,,,,,,Light_Operations * MEM_UOP_RETIRED.ANY / #Retired_Slots,,,,,,,,,,Light_Operations * MEM_INST_RETIRED.ANY / INST_RETIRED.ANY,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring memory operations -- uops for memory load or store accesses.,> 0.1 & P,4.4,Pipeline,,pub/v4.4,3,,,,, +RET,,,Fused_Instructions,,,,,,,Light_Operations * INST_RETIRED.MACRO_FUSED / #Retired_Slots,,,,,#NA,,,,,Light_Operations * UOPS_RETIRED.MACRO_FUSED / #Retired_Slots,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring fused instructions -- where one uop can represent multiple contiguous instructions. CMP+JCC or DEC+JCC are common examples of legacy fusions. {([MTL] Note new MOV+OP and Load+OP fusions appear under Other_Light_Ops in MTL!)},> 0.1 & P,4.7,Branches;Pipeline,,,3,,,,See section 'Optimizing for Macro-fusion' in Optimization Manual:, +RET,,,Non_Fused_Branches,,,,,,,Light_Operations * ( BR_INST_RETIRED.ALL_BRANCHES - INST_RETIRED.MACRO_FUSED ) / #Retired_Slots,,,,,#NA,,,,,Light_Operations * ( BR_INST_RETIRED.ALL_BRANCHES - UOPS_RETIRED.MACRO_FUSED ) / #Retired_Slots,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring branch instructions that were not fused. Non-conditional branches like direct JMP or CALL would count here. Can be used to examine fusible conditional jumps that were not fused.,> 0.1 & P,4.7,Branches;Pipeline,,,3,,,,, +RET,,,Branch_Instructions,,,,,,,#NA,,,,,Light_Operations * BR_INST_RETIRED.ALL_BRANCHES / #Retired_Slots,,,,,#NA,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring branch instructions.,> 0.1 & P,4.7,Branches;Pipeline,,,3,,,,, +RET,,,Other_Light_Ops,,,,,,,,,,,,,,,,,"max( 0 , Light_Operations - #Light_Ops_Sum )",,,,,,,,#NA,,Slots,This metric represents the remaining light uops fraction the CPU has executed - remaining means not covered by other sibling nodes. May undercount due to FMA double counting,> 0.3 & P,4.7,Pipeline,,pub/v3,3,,,,, +RET,,,,Nop_Instructions,,,,,,,,,,,,,,,,Light_Operations * INST_RETIRED.NOP / #Retired_Slots,,,,,,,,,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX ? #NA : INST_RETIRED.NOP,Slots,This metric represents fraction of slots where the CPU was retiring NOP (no op) instructions. Compilers often use NOPs for certain address alignments - e.g. start address of a function or loop body.,> 0.1 & P,4.7,Pipeline,,pub/v4.3,4,,,,Improve Codegen by correctly placing NOPs outside hot sections (e.g. outside loop body)., +RET,,,,Shuffles_256b,,,,,,Light_Operations * INT_VEC_RETIRED.SHUFFLES / #Retired_Slots,,,,,,,,,,,,,,,,,,,,Slots,"This metric represents fraction of slots where the CPU was retiring Shuffle operations of 256-bit vector size (FP or Integer). Shuffles may incur slow cross ""vector lane"" data transfers.",> 0.1 & P,4.7,HPC;Pipeline,,,4,,,,, +RET,,Heavy_Operations,,,,,,,,PERF_METRICS.HEAVY_OPERATIONS / #PERF_METRICS_SUM,,,,,Microcode_Sequencer + Retiring * ( UOPS_DECODED.DEC0 - UOPS_DECODED.DEC0:c1 ) / IDQ.MITE_UOPS,,,,,( #Retired_Slots + UOPS_RETIRED.MACRO_FUSED - INST_RETIRED.ANY ) / SLOTS,,,,,,,,Microcode_Sequencer,MTL/ADL/SPR/SPR-HBM ? UOPS_RETIRED.HEAVY : #NA,Slots,This metric represents fraction of slots where the CPU was retiring heavy-weight operations -- instructions that require two or more uops or micro-coded sequences. This highly-correlates with the uop length of these instructions/sequences. ([ICL+] Note this may overcount due to approximation using indirect events; [ADL+] .),> 0.1,4.3,Retire;TmaL2,,pub/v4.1,2,,,,, +RET,,,Few_Uops_Instructions,,,,,,,"max( 0 , Heavy_Operations - Microcode_Sequencer )",,,,,,,,,,Heavy_Operations - Microcode_Sequencer,,,,,,,,,,Slots,This metric represents fraction of slots where the CPU was retiring instructions that that are decoder into two or up to ([SNB+] four; [ADL+] five) uops. This highly-correlates with the number of uops in such instructions.,> 0.05 & P; $issueD0,4.5,,,,3,,,,, +RET,,,Microcode_Sequencer,,,,,,,UOPS_RETIRED.MS / SLOTS,,,,,,,,,,,,,,,,,,#Retire_Fraction * IDQ.MS_UOPS / SLOTS,SNB/JKT/IVB/IVT/HSW/HSX/BDW/BDX/SKL/KBL/KBLR/CFL/SKX/CLX/CPX/CNL/ICL/ICX/TGL/RKL ? IDQ.MS_UOPS : UOPS_RETIRED.MS,Slots,This metric represents fraction of slots the CPU was retiring uops fetched by the Microcode Sequencer (MS) unit. The MS is used for CISC instructions not supported by the default decoders (like repeat move strings; or CPUID); or by microcode assists used to address some operation modes (like in Floating Point assists). These cases can often be avoided.,> 0.05 & P; $issueMC; $issueMS,4.5,MicroSeq,,pub/v3,3,,,,, #Link: repeat move strings +RET,,,,Assists,,,,,,#Avg_Assist_Cost * ASSISTS.ANY / SLOTS,,,,,#Avg_Assist_Cost * ASSISTS.ANY / SLOTS,,,,,#Avg_Assist_Cost * ( FP_ASSIST.ANY + OTHER_ASSISTS.ANY ) / SLOTS,,,,,,#Avg_Assist_Cost * OTHER_ASSISTS.ANY_WB_ASSIST / SLOTS,,#NA,SNB/JKT ? #NA : IVB/IVT/HSW/HSX/BDW/BDX ? OTHER_ASSISTS.ANY_WB_ASSIST : SKL/KBL/KBLR/CFL/SKX/CLX/CPX ? OTHER_ASSISTS.ANY : ASSISTS.ANY,Slots_Estimated,This metric estimates fraction of slots the CPU retired uops delivered by the Microcode_Sequencer as a result of Assists. Assists are long sequences of uops that are required in certain corner-cases for operations that cannot be handled natively by the execution pipeline. For example; when working with very small floating point values (so-called Denormals); the FP units are not set up to perform these operations natively. Instead; a sequence of instructions to perform the computation on the Denormals is injected into the pipeline. Since these microcode sequences might be dozens of uops long; Assists can be extremely deleterious to performance and they can be avoided in many cases.,> 0.1 & P,4.6,,1.0,pub/v4.6,4,,,,, +RET,,,,,Page_Faults,,,,,99 * ASSISTS.PAGE_FAULT / SLOTS,,,,,,,,,,,,,,,,,,,,Slots_Estimated,This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Page Faults. A Page Fault may apply on first application access to a memory page. Note operating system handling of page faults accounts for the majority of its cost.,> 0.05,4.4,,,,5,,,,, +RET,,,,,FP_Assists,,,,,30 * ASSISTS.FP / SLOTS,,,,34 * ASSISTS.FP / SLOTS,,,,,,34 * FP_ASSIST.ANY / SLOTS,,,,,,,,,,Slots_Estimated,This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Floating Point (FP) Assists. FP Assist may apply when working with very small floating point values (so-called Denormals).,> 0.1,4.6,HPC,,,5,,,ZeroOk,"Consider DAZ (Denormals Are Zero) and/or FTZ (Flush To Zero) options in your compiler; ""-ffast-math"" with -O2 in GCC for example. This option may improve performance if the denormal values are not critical in your application. Also note that the DAZ and FTZ modes are not compatible with the IEEE Standard 754.",https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/reference/cpu-metrics-reference/bad-speculation-back-end-bound-pipeline-slots/fp-assists.html +RET,,,,,AVX_Assists,,,,,63 * ASSISTS.SSE_AVX_MIX / SLOTS,,,,,,,,,,,,,,,,,,,,Slots_Estimated,This metric estimates fraction of slots the CPU retired uops as a result of handing SSE to AVX* or AVX* to SSE transition Assists. ,> 0.1,4.6,HPC,,,5,,,ZeroOk,, +RET,,,,CISC,,,,,,,,,,,,,,,,,,,,,,"max( 0 , Microcode_Sequencer - Assists )",,#NA,MTL/ADL/SPR/SPR-HBM ? FRONTEND_RETIRED.MS_FLOWS : #NA,Slots,This metric estimates fraction of cycles the CPU retired uops originated from CISC (complex instruction set computer) instruction. A CISC instruction has multiple uops that are required to perform the instruction's functionality as in the case of read-modify-write as an example. Since these instructions require multiple uops they may or may not imply sub-optimal use of machine resources.,> 0.1 & P,4.4,,,,4,,,,, +.,metrics,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-,-,,2.5,,,pub/v3,-,,,,, +Info.Bottleneck,Mispredictions,,,,,,,,,,,,,,,,,,,100 * ( 1 - #Umisp ) * ( Branch_Mispredicts + Fetch_Latency * Mispredicts_Resteers / ##Fetch_Latency ),,,,,,,,,,Scaled_Slots,Total pipeline cost of Branch Misprediction related bottlenecks,> 20; $issueBM,4.7,Bad;BadSpec;BrMispredicts,,pub/v4.3,4,;EDP;perf,,InTree,, +Info.Bottleneck,Big_Code,,,,,,,,,,,,,,,,,,,100 * Fetch_Latency * ( ITLB_Misses + ICache_Misses + Unknown_Branches ) / ##Fetch_Latency,,,,,,,,,,Scaled_Slots,Total pipeline cost of instruction fetch related bottlenecks by large code footprint programs (i-side cache; TLB and BTB misses),> 20,4.6,BigFootprint;Fed;Frontend;IcMiss;MemoryTLB,,pub/v4.3,4,;EDP;perf,,InTree,, +Info.Bottleneck,Instruction_Fetch_BW,,,,,,,,,,,,,,,,,,,100 * ( Frontend_Bound - ( 1 - #Umisp ) * Fetch_Latency * Mispredicts_Resteers / ##Fetch_Latency - #Assist_Frontend ) - Big_Code,,,,,,,,,,Scaled_Slots,Total pipeline cost of instruction fetch bandwidth related bottlenecks,> 20,4.7,Fed;FetchBW;Frontend,,pub/v4.3,4,;EDP;perf,,Tree+#Repeat_Fraction,, +Info.Bottleneck,Cache_Memory_Bandwidth,,,,,,,100 * ( ( Memory_Bound * ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Bandwidth / ##DRAM_Bound ) ) + ( Memory_Bound * ( L3_Bound / ##Memory_Bound ) * ( SQ_Full / ##L3_Bound ) ) + ( Memory_Bound * ( L1_Bound / ##Memory_Bound ) * ( FB_Full / ##L1_Bound ) ) ) if #HBM_Only else ( 100 * ( ( Memory_Bound * ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Bandwidth / ##DRAM_Bound ) ) + ( Memory_Bound * HBM_Bound / ##Memory_Bound ) * MEM_Bandwidth / ##DRAM_Bound + ( Memory_Bound * ( L3_Bound / ##Memory_Bound ) * ( SQ_Full / ##L3_Bound ) ) + ( Memory_Bound * ( L1_Bound / ##Memory_Bound ) * ( FB_Full / ##L1_Bound ) ) ) ),,,,,,,,,,,,100 * ( ( Memory_Bound * ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Bandwidth / ##DRAM_Bound ) ) + ( Memory_Bound * ( L3_Bound / ##Memory_Bound ) * ( SQ_Full / ##L3_Bound ) ) + ( Memory_Bound * ( L1_Bound / ##Memory_Bound ) * ( FB_Full / ##L1_Bound ) ) ),,,,,,,,,,Scaled_Slots,Total pipeline cost of external Memory- or Cache-Bandwidth related bottlenecks,> 20; $issueBW,4.7,Mem;MemoryBW;Offcore,,,4,;EDP;perf,,InTree,, +Info.Bottleneck,Cache_Memory_Latency,,,,,,,100 * ( ( Memory_Bound * ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Latency / ##DRAM_Bound ) ) + ( Memory_Bound * ( L3_Bound / ##Memory_Bound ) * ( L3_Hit_Latency / ##L3_Bound ) ) + ( Memory_Bound * L2_Bound / ##Memory_Bound ) + ( Memory_Bound * ( Store_Bound / ##Memory_Bound ) * ( Store_Latency / ##Store_Bound ) ) ) if #HBM_Only else 100 * ( ( Memory_Bound * ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Latency / ##DRAM_Bound ) ) + ( Memory_Bound * HBM_Bound / ##Memory_Bound ) * MEM_Latency / ##DRAM_Bound + ( Memory_Bound * ( L3_Bound / ##Memory_Bound ) * ( L3_Hit_Latency / ##L3_Bound ) ) + ( Memory_Bound * L2_Bound / ##Memory_Bound ) + ( Memory_Bound * ( Store_Bound / ##Memory_Bound ) * ( Store_Latency / ##Store_Bound ) ) ),,,,,,,,,,,,100 * ( ( Memory_Bound * ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Latency / ##DRAM_Bound ) ) + ( Memory_Bound * ( L3_Bound / ##Memory_Bound ) * ( L3_Hit_Latency / ##L3_Bound ) ) + ( Memory_Bound * L2_Bound / ##Memory_Bound ) + ( Memory_Bound * ( Store_Bound / ##Memory_Bound ) * ( Store_Latency / ##Store_Bound ) ) ),,,,,,,,,,Scaled_Slots,Total pipeline cost of external Memory- or Cache-Latency related bottlenecks,> 20; $issueLat,4.7,Mem;MemoryLat;Offcore,,,0,;EDP;perf,,InTree,, +Info.Bottleneck,Memory_Data_TLBs,,,,,,100 * ( Memory_Bound * ( L1_Bound / ##Memory_Bound ) * ( DTLB_Load / ##L1_Bound ) + ( Memory_Bound * ( Store_Bound / ##Memory_Bound ) * ( DTLB_Store / ##Store_Bound ) ) ),,,,,,,,,,,,,"100 * ( Memory_Bound * ( L1_Bound / max( Memory_Bound , ##Memory_Bound ) ) * ( DTLB_Load / max( L1_Bound , ##L1_Bound ) ) + ( Memory_Bound * ( Store_Bound / ##Memory_Bound ) * ( DTLB_Store / ##Store_Bound ) ) ) ",,,,,,,,,,Scaled_Slots,Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs),> 20; $issueTLB,4.7,Mem;MemoryTLB;Offcore,,,0,;EDP;perf,,InTree,, +Info.Bottleneck,Memory_Synchronization,,,,,,,,,,,,,,,,,,100 * ( Memory_Bound * ( ( DRAM_Bound / ##Memory_Bound ) * ( MEM_Latency / ##DRAM_Bound ) * Remote_Cache / ##MEM_Latency + ( L3_Bound / ##Memory_Bound ) * ( Contested_Accesses + Data_Sharing ) / ##L3_Bound + ( Store_Bound / ##Memory_Bound ) * False_Sharing / ( ##Store_Bound - Store_Latency ) ) + Machine_Clears * ( 1 - Other_Nukes / ##Machine_Clears ) ),100 * ( Memory_Bound * ( ( L3_Bound / ##Memory_Bound ) * ( Contested_Accesses + Data_Sharing ) / ##L3_Bound + ( Store_Bound / ##Memory_Bound ) * False_Sharing / ( ##Store_Bound - Store_Latency ) ) + Machine_Clears * ( 1 - Other_Nukes / ##Machine_Clears ) ),,,,,,,,,,Scaled_Slots,Total pipeline cost of Memory Synchronization related bottlenecks (data transfers and coherency updates across processors),> 10; $issueTLB,4.7,Mem;Offcore,,,0,;EDP;perf,,,, +Info.Bottleneck,Compute_Bound_Est,,,,,,,,100 * ( ( Core_Bound * Divider / ##Core_Bound ) + ( Core_Bound * AMX_Busy / ##Core_Bound ) + ( Core_Bound * ( Ports_Utilization / ##Core_Bound ) * ( Ports_Utilized_3m / ##Ports_Utilization ) ) ),,,,,,,,,,,100 * ( ( Core_Bound * Divider / ##Core_Bound ) + ( Core_Bound * ( Ports_Utilization / ##Core_Bound ) * ( Ports_Utilized_3m / ##Ports_Utilization ) ) ),,,,,,,,,,Scaled_Slots,Total pipeline cost when the execution is compute-bound - an estimation. Covers Core Bound when High ILP as well as when long-latency execution units are busy.,> 20; $issueComp,4.7,Cor,,,0,;EDP;perf,,Tree+ILP,, +Info.Bottleneck,Irregular_Overhead,,,,,,,,,,,,,,,,,,,100 * ( #Assist_Frontend + #Umisp * Branch_Mispredicts + ( Machine_Clears * Other_Nukes / ##Machine_Clears ) + #Serialize_Core + #Assist_Retired ),,,,,,,,,,Scaled_Slots,"Total pipeline cost of irregular execution (e.g. FP-assists in HPC, Wait time with work imbalance multithreaded workloads, overhead in system services or virtualized environments)",> 10; $issueMS,4.7,Bad;Cor;Ret,,,0,;EDP;perf,,Tree+#Repeat_Fraction,, +Info.Bottleneck,Other_Bottlenecks,,,,,,,,,,,,,,,,,,,100 - ( Big_Code + Instruction_Fetch_BW + Mispredictions + Cache_Memory_Bandwidth + Cache_Memory_Latency + Memory_Data_TLBs + Memory_Synchronization + Compute_Bound_Est + Irregular_Overhead + Branching_Overhead + Base_Non_Br ) ,,,,,,,,,,Scaled_Slots,Total pipeline cost of remaining bottlenecks (apart from those listed in the Info.Bottlenecks metrics class). Examples include data-dependencies (Core Bound when Low ILP) and other unlisted memory-related stalls.,> 20,4.7,Cor;Offcore,,,0,;EDP;perf,,,, +Info.Bottleneck,Branching_Overhead,,,,,,,,,,,,,,,,,,,100 * #Branching_Retired,,,,,,,,,,Scaled_Slots,Total pipeline cost of branch related instructions (used for program control-flow including function calls),> 5,4.7,Ret,,,0,;EDP;perf,,Tree+#Branching_Retired,, +Info.Bottleneck,Base_Non_Br,,,,,,,,,,,,,,,,,,,100 * ( Retiring - #Branching_Retired - #Assist_Retired ),,,,,,,,,,Scaled_Slots,"Total pipeline cost of ""useful operations"" - the baseline operations not covered by Branching_Overhead nor Irregular_Overhead.",> 20,4.7,Ret,,,0,;EDP;perf,,InTree,, +Info.Thread,IPC,,,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / CLKS,,Metric,Instructions Per Cycle (per Logical Processor),,4.3,Ret;Summary,#Pipeline_Width + 2,pub/v3,i,;EDP;perf,,,, +Info.Thread,UopPI,,,,,,,,,,,,,,,,,,,,,,,,,,,#Retired_Slots / INST_RETIRED.ANY,,Metric,Uops Per Instruction,> 1.05,4.5,Pipeline;Ret;Retire,2.0,pub/v3,4,;EDP;perf,,,, +Info.Thread,UpTB,,,,,,,,,,,,,,,,,,,,,,,,,#Retired_Slots / BR_INST_RETIRED.NEAR_TAKEN,,,,Metric,Instruction per taken branch,< #Pipeline_Width * 1.5,4.3,Branches;Fed;FetchBW,,,i,;perf,,,, +Info.Thread,CPI,,,,,,,,,,,,,,,,,,,,,,,,,,,1 / IPC,,Metric,Cycles Per Instruction (per Logical Processor),,2.7,Pipeline;Mem,,pub/v3,i,;EDP;perf;VTune,,,, +Info.Thread,CLKS,,,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD,,Count,Per-Logical Processor actual clocks when the Logical Processor is active.,,4.2,Pipeline,,pub/v3,1,;EDP;perf,,,, +Info.Thread,SLOTS,,,,,,,,,,,,,TOPDOWN.SLOTS:perf_metrics,,,,,,,,,,,,,,#Pipeline_Width * CORE_CLKS,,Count,Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward),,4.3,TmaL1,,pub/v3,1,;EDP;perf,,,, +Info.Thread,Slots_Utilization,,,,,,,,,,,,,SLOTS / ( TOPDOWN.SLOTS:percore / 2 ) if #SMT_on else 1,,,,,,,,,,,,,,#NA,,Metric,Fraction of Physical Core issue-slots utilized by this Logical Processor,,4.1,SMT;TmaL1,1.0,,i,,,,, +Info.Thread,Execute_per_Issue,,,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY,,#NA,,UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY,,UOPS_DISPATCHED.THREAD / UOPS_ISSUED.ANY,,Metric,"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.",,4.3,Cor;Pipeline,,,,,,,, +Info.Core,CoreIPC,,,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / CORE_CLKS,,Core_Metric,Instructions Per Cycle across hyper-threads (per physical core),,4.3,Ret;SMT;TmaL1,#Pipeline_Width + 2,pub/v3,1,;EDP;perf,,,, +Info.Core,FLOPc,,,,,,,,,,,,,,,,,,,,,#FLOP_Count / CORE_CLKS,,#NA,,,,#FLOP_Count / CORE_CLKS,,Core_Metric,Floating Point Operations Per Cycle,,4.6,Ret;Flops,10.0,pub/v3,i,;perf,,,, +Info.Core,FP_Arith_Utilization,,,,,,,,,( FP_ARITH_DISPATCHED.PORT_0 + FP_ARITH_DISPATCHED.PORT_1 + FP_ARITH_DISPATCHED.PORT_5 ) / ( 2 * CORE_CLKS ),,,,,,,,,,,,( #FP_Arith_Scalar + #FP_Arith_Vector ) / ( 2 * CORE_CLKS ),,,,,,#NA,,Core_Metric,Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width). Values > 1 are possible due to ([BDW+] Fused-Multiply Add (FMA) counting - common; [ADL+] use all of ADD/MUL/FMA in Scalar or 128/256-bit vectors - less common).,,4.4,Cor;Flops;HPC,2.0,,i,;EDP,,,, +Info.Core,ILP,,,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / UOPS_EXECUTED.THREAD:c1,,( UOPS_EXECUTED.CORE / 2 / #Execute_Cycles ) if #SMT_on else UOPS_EXECUTED.CORE / #Execute_Cycles,,UOPS_EXECUTED.THREAD / UOPS_EXECUTED.THREAD:c1,,UOPS_DISPATCHED.THREAD / #Execute_Cycles,,Metric,Instruction-Level-Parallelism (average number of uops executed when there is execution) per thread (logical-processor),,4.7,Backend;Cor;Pipeline;PortsUtil,#Exe_Ports,pub/v3,i,;EDP;perf,,,, +Info.Core,EPC,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / CLKS,,,,,,,,,,Metric,uops Executed per Cycle,,4.6,Power,20.0,,,;EDP;perf,,,, +Info.Botlnk.L0,Core_Bound_Likely,,,,,,,,,,,,,,,,,,,100 * ( 1 - Core_Bound / Ports_Utilization if Core_Bound < Ports_Utilization else 1 ) if SMT_2T_Utilization > 0.5 else 0,,,,,,,,,,Metric,Probability of Core Bound bottleneck hidden by SMT-profiling artifacts,> 0.5,4.7,Cor;SMT,1.0,,0,,,InTree+SMT_2T_Utilization,Tip: consider analysis with SMT disabled, +Info.Core,CORE_CLKS,,,,,,,,,,,,,CPU_CLK_UNHALTED.DISTRIBUTED if #SMT_on else CLKS,CPU_CLK_UNHALTED.CORE,,,,,,,,,,,,,( CPU_CLK_UNHALTED.THREAD_ANY / 2 ) if #SMT_on else CLKS,,Count,Core actual clocks when any Logical Processor is active on the Physical Core,,4.1,SMT,,pub/v3,1,;perf,,,, +Info.Inst_Mix,IpLoad,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_LOADS_PS,,,,,,INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS_PS,,,,Inst_Metric,Instructions per Load (lower number means higher occurrence rate),< 3,4.6,InsType,,pub/v3.2,i,;perf,,,Tip: reduce memory accesses,#Link Opt Guide section: Minimize Register Spills +Info.Inst_Mix,IpStore,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_STORES_PS,,,,,,INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES_PS,,,,Inst_Metric,Instructions per Store (lower number means higher occurrence rate),< 8,4.6,InsType,,pub/v3.2,i,;perf,,,Tip: reduce memory accesses,#Link Opt Guide section: Minimize Register Spills +Info.Inst_Mix,IpBranch,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES,,,,Inst_Metric,Instructions per Branch (lower number means higher occurrence rate),< 8,3.2,Branches;Fed;InsType,,pub/v3.2,i,;perf,,,, +Info.Inst_Mix,IpCall,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL,,,,Inst_Metric,Instructions per (near) call (lower number means higher occurrence rate),< 200,4.7,Branches;Fed;PGO,,pub/v3.4,i,;perf,,,, +Info.Inst_Mix,IpTB,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN,,,,Inst_Metric,Instruction per taken branch,< #Pipeline_Width * 2 + 1; $issueFB,4.5,Branches;Fed;FetchBW;Frontend;PGO,,pub/v3.2,i,;EDP;perf,,,, +Info.Inst_Mix,BpTkBranch,,,,,,,,,,,,,,,,,,,,,,,,,BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN,,,,Metric,Branch instructions per taken branch. ,,4.0,Branches;Fed;PGO,,pub/v3.2,i,;perf,,,Can be used to approximate PGO-likelihood for non-loopy codes., +Info.Inst_Mix,IpFLOP,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / #FLOP_Count,,,,,,,,Inst_Metric,Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate),< 10,4.6,Flops;InsType,,pub/v4,i,;perf,,,Reference: Tuning Performance via Metrics with Expectations,https://doi.org/10.1109/LCA.2019.2916408 +Info.Inst_Mix,IpArith,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / ( #FP_Arith_Scalar + #FP_Arith_Vector ),,#NA,,1 / ( FP_Scalar + FP_Vector ),,,,Inst_Metric,Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting. Approximated prior to BDW.,< 10,4.7,Flops;InsType,,,i,,,,, +Info.Inst_Mix,IpArith_Scalar_HP,,,,,,,,INST_RETIRED.ANY / FP_ARITH_INST_RETIRED2.SCALAR,,,,,,,,,,,,,,,,,,,,,Inst_Metric,Instructions per FP Arithmetic Scalar Half-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.,< 10,4.7,Flops;FpScalar;InsType;Server,,,i,,,,, +Info.Inst_Mix,IpArith_Scalar_SP,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE,,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.,< 10,4.7,Flops;FpScalar;InsType,,,i,,,,, +Info.Inst_Mix,IpArith_Scalar_DP,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE,,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.,< 10,4.7,Flops;FpScalar;InsType,,,i,,,,, +Info.Inst_Mix,IpArith_AVX128,,,,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128B_PACKED_HALF ),,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ),,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128BIT_PACKED_BF16 ),,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE ),,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.,< 10,4.7,Flops;FpVector;InsType,,,i,,,,, +Info.Inst_Mix,IpArith_AVX256,,,,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256B_PACKED_HALF ),,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ),,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256BIT_PACKED_BF16 ),,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ),,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.,< 10,4.7,Flops;FpVector;InsType,,,i,,,,, +Info.Inst_Mix,IpArith_AVX512,,,,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512B_PACKED_HALF ),#NA,,,,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ),INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512BIT_PACKED_BF16 ),,,INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ),,,,,,,,,#NA,,Inst_Metric,Instructions per FP Arithmetic AVX 512-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.,< 10,4.7,Flops;FpVector;InsType,,,i,,,,, +Info.Inst_Mix,IpArith_AMX_F16,,,,,,,,#NA,,,,,,,,,,,,,,,,,,,,,Inst_Metric,Instructions per FP Arithmetic AMX operation (lower number means higher occurrence rate). Operations factored per matrices' sizes of the AMX instructions.,< 10,4.7,Flops;FpVector;InsType;Server,,,,;EDP;perf,,,, +Info.Inst_Mix,IpArith_AMX_Int8,,,,,,,,#NA,,,,,,,,,,,,,,,,,,,,,Inst_Metric,Instructions per Integer Arithmetic AMX operation (lower number means higher occurrence rate). Operations factored per matrices' sizes of the AMX instructions.,< 10,4.7,IntVector;InsType;Server,,,,;EDP;perf,,,, +Info.Inst_Mix,IpPause,,,,,,,,,Instructions / CPU_CLK_UNHALTED.PAUSE_INST,,,,Instructions / MISC_RETIRED.PAUSE_INST,,,,Instructions / ROB_MISC_EVENTS.PAUSE_INST,,,,,,,,,,,,Inst_Metric,Instructions per PAUSE (lower number means higher occurrence rate),,4.7,Flops;FpVector;InsType,,,,,,,, +Info.Inst_Mix,IpSWPF,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / SW_PREFETCH_ACCESS.T0:u0xF,,,,,,,,,,Inst_Metric,Instructions per Software prefetch instruction (of any type: NTA/T0/T1/T2/Prefetch) (lower number means higher occurrence rate),< 100,4.4,Prefetches,1000,,i,,,,, +Info.Inst_Mix,Instructions,,,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY,INST_RETIRED.PREC_DIST,Count,Total number of retired Instructions,,4.0,Summary;TmaL1,,pub/v3.2,1,;perf,,,, +Info.Pipeline,Retire,,,,,,,,,,,,,#Retired_Slots / UOPS_RETIRED.SLOTS:c1,,,,,,,,,,,,,,#Retired_Slots / UOPS_RETIRED.RETIRE_SLOTS:c1,,Metric,Average number of Uops retired in cycles where at least one uop has retired.,,4.4,Pipeline;Ret,,,,,,,, +Info.Pipeline,Strings_Cycles,,,,,,,,,INST_RETIRED.REP_ITERATION / UOPS_RETIRED.SLOTS:c1,,,,,,,,,,,,,,,,,,,,Metric,Estimated fraction of retirement-cycles dealing with repeat instructions,> 0.1,4.4,MicroSeq;Pipeline;Ret,,,3,;EDP;perf,,,, +Info.Pipeline,IpAssist,,,,,,,,,,,,,INST_RETIRED.ANY / ASSISTS.ANY,,,,,,INST_RETIRED.ANY / ( FP_ASSIST.ANY + OTHER_ASSISTS.ANY ),,,,,,,,,,Inst_Metric,Instructions per a microcode Assist invocation. See Assists tree node for details (lower number means higher occurrence rate),< 100000,4.6,MicroSeq;Pipeline;Ret;Retire,,pub/v4.6,,,,,, +Info.Pipeline,Execute,,,,,,,,,,,,,,,,,,,,,UOPS_EXECUTED.THREAD / #Execute_Cycles,,#NA,,UOPS_EXECUTED.THREAD / #Execute_Cycles,,,,Metric,,,4.7,Cor;Pipeline;PortsUtil;SMT,#Exe_Ports,,i,,,,, +Info.Frontend,Fetch_UpC,,,,,,,,,,,,,,,,,,,UOPS_ISSUED.ANY / UOPS_ISSUED.ANY:c1,,,,,,,,,,Metric,Average number of Uops issued by front-end when it issued something,,4.3,Fed;FetchBW,6.0,pub/v4.5,,,,,, +Info.Frontend,LSD_Coverage,,,,,,,,#NA,,,,#NA,,,,#NA,LSD.UOPS / #Fetched_Uops,,,,,,,,,,#NA,,Metric,Fraction of Uops delivered by the LSD (Loop Stream Detector; aka Loop Cache),,4.5,Fed;LSD,1.0,pub/v4,i,;perf,,,, +Info.Frontend,DSB_Coverage,,,,,,,,,,,,,,,,,,,,,,,,,,,IDQ.DSB_UOPS / #Fetched_Uops,,Metric,Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache),< 0.7 & #HighIPC; $issueFB,4.5,DSB;Fed;FetchBW,1.0,pub/v3,i,;perf;vtune,,,See section 'Decoded ICache' in Optimization Manual,http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html +Info.Frontend,Unknown_Branch_Cost,,,,,,,,,INT_MISC.UNKNOWN_BRANCH_CYCLES / INT_MISC.UNKNOWN_BRANCH_CYCLES:c1:e1,,,,,,,,,,,,,,,,,,,,Metric,Average number of cycles the front-end was delayed due to an Unknown Branch detection. See Unknown_Branches node.,,4.6,Fed,,,,,,,, +Info.Frontend,DSB_Switch_Cost,,,,,,,,,,,,,,DSB2MITE_SWITCHES.PENALTY_CYCLES / DSB2MITE_SWITCHES.PENALTY_CYCLES:c1:e1,,,,,DSB2MITE_SWITCHES.PENALTY_CYCLES / DSB2MITE_SWITCHES.COUNT,,,,,,,,,,Metric,Average number of cycles of a switch from the DSB fetch-unit to MITE fetch unit - see DSB_Switches tree node for details.,,4.4,DSBmiss,,,,,,,, +Info.Botlnk.L2,DSB_Misses,,,,,,,,,,,,,,,,,,,100 * ( Fetch_Latency * DSB_Switches / ##Fetch_Latency + Fetch_Bandwidth * MITE / ##Fetch_Bandwidth ),,,,,,,,,,Scaled_Slots,Total pipeline cost of DSB (uop cache) misses - subset of the Instruction_Fetch_BW Bottleneck.,> 10; $issueFB,4.5,DSBmiss;Fed,,pub/v4.3,0,;EDP;perf;VTune,,InTree,, +Info.Frontend,ICache_Miss_Latency,,,,,,,,,ICACHE_DATA.STALLS / ICACHE_DATA.STALLS:c1:e1,,,,,ICACHE_16B.IFDATA_STALL / ICACHE_16B.IFDATA_STALL:c1:e1,,,,,ICACHE_16B.IFDATA_STALL / ICACHE_16B.IFDATA_STALL:c1:e1 + 2,,,,,,,,,,Metric,Average Latency for L1 instruction cache misses,,4.5,Fed;FetchLat;IcMiss,,,3,,,,, +Info.Botlnk.L2,IC_Misses,,,,,,,,,,,,,,,,,,,100 * ( Fetch_Latency * ICache_Misses / ##Fetch_Latency ),,,,,,,,,,Scaled_Slots,Total pipeline cost of Instruction Cache misses - subset of the Big_Code Bottleneck.,> 5; $issueFL,4.5,Fed;FetchLat;IcMiss,,,0,,,InTree,, +Info.Frontend,IpDSB_Miss_Ret,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / FRONTEND_RETIRED.ANY_DSB_MISS,,,,,,,,,,Inst_Metric,Instructions per non-speculative DSB miss (lower number means higher occurrence rate),< 50,4.3,DSBmiss;Fed,,,3,;EDP;perf,,,, +Info.Frontend,IpUnknown_Branch,,,,,,,,,,,,,,,,,,,,,,,,,Instructions / BACLEARS.ANY,,,,Metric,Instructions per speculative Unknown Branch Misprediction (BAClear) (lower number means higher occurrence rate),,4.5,Fed,,,i,EDP,,,, +Info.Frontend,L2MPKI_Code,,,,,,,,,,,,,,,,,,,1000 * FRONTEND_RETIRED.L2_MISS / INST_RETIRED.ANY,,,,,,,,,,Metric,L2 cache true code cacheline misses per kilo instruction ,,4.5,IcMiss,,,i,,,,, +Info.Frontend,L2MPKI_Code_All,,,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.CODE_RD_MISS / INST_RETIRED.ANY,,,,,,,,,,Metric,L2 cache speculative code cacheline misses per kilo instruction ,,4.5,IcMiss,,,i,,,,, +Info.Bad_Spec,IpMispredict,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES,,,,Inst_Metric,Number of Instructions per non-speculative Branch Misprediction (JEClear) (lower number means higher occurrence rate),< 200,4.4,Bad;BadSpec;BrMispredicts,,pub/v3.4,i,;perf,,,, +Info.Bad_Spec,IpMisp_Cond_Ntaken,,,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.COND_NTAKEN,,,,,,,,,,,,,,,,Inst_Metric,Instructions per retired mispredicts for conditional non-taken branches (lower number means higher occurrence rate).,< 200,4.5,Bad;BrMispredicts,,,,,,,, +Info.Bad_Spec,IpMisp_Cond_Taken,,,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.COND_TAKEN,,,,,,,,,,,,,,,,Inst_Metric,Instructions per retired mispredicts for conditional taken branches (lower number means higher occurrence rate).,< 200,4.5,Bad;BrMispredicts,,,,,,,, +Info.Bad_Spec,IpMisp_Ret,,,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.RET,,,,,,,,,,,,,,,,Inst_Metric,Instructions per retired mispredicts for return branches (lower number means higher occurrence rate).,< 500,4.5,Bad;BrMispredicts,,,,,,,, +Info.Bad_Spec,IpMisp_Indirect,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_MISP_RETIRED.INDIRECT,,,,,,,,,,,Instructions / ( #Retire_Fraction * BR_MISP_EXEC.INDIRECT ),,,,Inst_Metric,Instructions per retired mispredicts for indirect CALL or JMP branches (lower number means higher occurrence rate).,< 1000,4.6,Bad;BrMispredicts,,,i,,,,, +Info.Bad_Spec,Branch_Misprediction_Cost,,,,,,,,,,,,,,,,,,,Mispredictions * SLOTS / BR_MISP_RETIRED.ALL_BRANCHES / 100,,,,,,,,#NA,,Core_Metric,Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear),; $issueBM,4.6,Bad;BrMispredicts,300,pub/v3.4,i,;perf,,,, +Info.Bad_Spec,Spec_Clears_Ratio,,,,,,,,,,,,,,,,,,,INT_MISC.CLEARS_COUNT / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT ),,,,,,,,,,Metric,Speculative to Retired ratio of all clears (covering mispredicts and nukes),,4.6,BrMispredicts,,,,,,,, +Info.Branches,Cond_NT,,,,,,,,,,,,,BR_INST_RETIRED.COND_NTAKEN / BR_INST_RETIRED.ALL_BRANCHES,,,,,,BR_INST_RETIRED.NOT_TAKEN / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are non-taken conditionals,,4.3,Bad;Branches;CodeGen;PGO,1.0,,i,,,,, +Info.Branches,Cond_TK,,,,,,,,,,,,,BR_INST_RETIRED.COND_TAKEN / BR_INST_RETIRED.ALL_BRANCHES,,,,,,( BR_INST_RETIRED.CONDITIONAL_PS - BR_INST_RETIRED.NOT_TAKEN ) / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are taken conditionals,,4.3,Bad;Branches;CodeGen;PGO,1.0,,i,,,,, +Info.Branches,CallRet,,,,,,,,,,,,,,,,,,,( BR_INST_RETIRED.NEAR_CALL + BR_INST_RETIRED.NEAR_RETURN ) / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are CALL or RET,,4.3,Bad;Branches,1.0,,i,,,,, +Info.Branches,Jump,,,,,,,,,,,,,,,,,,,#Br_DoI_Jumps / BR_INST_RETIRED.ALL_BRANCHES,,,,,,,,,,Fraction,Fraction of branches that are unconditional (direct or indirect) jumps,,4.3,Bad;Branches,1.0,,i,,,,, +Info.Branches,Other_Branches,,,,,,,,,,,,,1 - ( Cond_NT + Cond_TK + CallRet + Jump ),,,,,,,,,,,,,,,,Fraction,Fraction of branches of other types (not individually covered by other metrics in Info.Branches group),,4.3,Bad;Branches,1.0,,i,,,,, +Info.Memory,Load_Miss_Real_Latency,,,,,,,,,L1D_PEND_MISS.PENDING / MEM_LOAD_COMPLETED.L1_MISS_ANY,,,,,,,,,,L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS_PS + MEM_LOAD_RETIRED.FB_HIT_PS ),,,,,,L1D_PEND_MISS.PENDING / ( MEM_LOAD_UOPS_RETIRED.L1_MISS + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS ),,#NA,,Clocks_Latency,Actual Average Latency for L1 data-cache miss demand load operations (in core cycles),,4.4,Mem;MemoryBound;MemoryLat,1000,pub/v3.1,3,;EDP;perf,,,, +Info.Memory,MLP,,,,,,,,,,,,,,,,,,,,,,,,,L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES,,#NA,,Metric,Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor),,3.4,Mem;MemoryBound;MemoryBW,10.0,pub/v3.3,i,;EDP;perf,,,, +Info.Memory,L1MPKI,,,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.L1_MISS_PS / INST_RETIRED.ANY,,,,,,1000 * MEM_LOAD_UOPS_RETIRED.L1_MISS / INST_RETIRED.ANY,,#NA,,Metric,L1 cache true misses per kilo instruction for retired demand loads,,3.3,CacheHits;Mem,,pub/v3.3,i,;perf,,,, +Info.Memory,L1MPKI_Load,,,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.ALL_DEMAND_DATA_RD / INST_RETIRED.ANY,,,,,,,,#NA,,Metric,L1 cache true misses per kilo instruction for all demand loads (including speculative),,4.1,CacheHits;Mem,,,i,,,,, +Info.Memory,L2MPKI,,,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.L2_MISS_PS / INST_RETIRED.ANY,,,,,,1000 * MEM_LOAD_UOPS_RETIRED.L2_MISS / INST_RETIRED.ANY,,#NA,,Metric,L2 cache true misses per kilo instruction for retired demand loads,,3.3,Mem;Backend;CacheHits,,pub/v3.3,i,;perf,,,, +Info.Memory,L2MPKI_All,,,,,,,,,,,1000 * L2_RQSTS.MISS / INST_RETIRED.ANY,,1000 * ( ( OFFCORE_REQUESTS.ALL_DATA_RD - OFFCORE_REQUESTS.DEMAND_DATA_RD ) + L2_RQSTS.ALL_DEMAND_MISS + L2_RQSTS.SWPF_MISS ) / Instructions,,,,,,,,1000 * L2_RQSTS.MISS / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache ([RKL+] true) misses per kilo instruction for all request types (including speculative),,4.4,CacheHits;Mem;Offcore,,pub/v3.5,i,;perf,,,, +Info.Memory,L2MPKI_Load,,,,,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache ([RKL+] true) misses per kilo instruction for all demand loads (including speculative),,4.4,CacheHits;Mem,,,i,,,,, +Info.Memory,L2HPKI_All,,,,,,,,,,,1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY,,,#NA,,,,,,,1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache hits per kilo instruction for all request types (including speculative),,4.1,CacheHits;Mem,,pub/v3.5,i,;perf,,,, +Info.Memory,L2HPKI_Load,,,,,,,,,,,,,,,,,,,,,1000 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY,,,,,,#NA,,Metric,L2 cache hits per kilo instruction for all demand loads (including speculative),,3.5,CacheHits;Mem,,,i,,,,, +Info.Memory,L3MPKI,,,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.L3_MISS_PS / INST_RETIRED.ANY,,,,1000 * MEM_LOAD_UOPS_RETIRED.L3_MISS_PS / INST_RETIRED.ANY,,1000 * MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS / INST_RETIRED.ANY,,#NA,,Metric,L3 cache true misses per kilo instruction for retired demand loads,,3.3,Mem;,,pub/v3.3,i,;perf,,,, +Info.Memory,FB_HPKI,,,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_RETIRED.FB_HIT_PS / INST_RETIRED.ANY,,,,,,,,#NA,,Metric,Fill Buffer (FB) hits per kilo instructions for retired demand loads (L1D misses that merge into ongoing miss-handling entries),,4.4,CacheHits;Mem,,,i,,,,, +Info.Memory,L1D_Cache_Fill_BW,,,,,,,,,,,,,,,,,,,,,,,,,64 * L1D.REPLACEMENT / #OneBillion / Time,,#NA,,Metric,,,4.6,Mem;MemoryBW,,pub/v4.6,i,;perf,,,, +Info.Memory,L2_Cache_Fill_BW,,,,,,,,,,,,,,,,,,,,,,,,,64 * L2_LINES_IN.ALL / #OneBillion / Time,,#NA,,Metric,,,4.6,Mem;MemoryBW,,pub/v4.6,i,;perf,,,, +Info.Memory,L3_Cache_Fill_BW,,,,,,,,,,,,,,,,,,,,,,,,,64 * LONGEST_LAT_CACHE.MISS / #OneBillion / Time,,#NA,,Metric,,,4.6,Mem;MemoryBW,,pub/v4.6,i,;perf,,,, +Info.Memory,L3_Cache_Access_BW,,,,,,,,,,,,,,,,,,,64 * OFFCORE_REQUESTS.ALL_REQUESTS / #OneBillion / Time,,,,,,,,#NA,,Metric,,,4.6,Mem;MemoryBW;Offcore,,pub/v4.6,i,;perf,,,, +Info.Memory.TLB,Page_Walks_Utilization,,,,,,,,,( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING ) / ( 4 * CORE_CLKS ),,,,,( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING ) / ( 2 * CORE_CLKS ),,,,,( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * CORE_CLKS ),( ITLB_MISSES.WALK_DURATION + DTLB_LOAD_MISSES.WALK_DURATION + DTLB_STORE_MISSES.WALK_DURATION + 7 * ( DTLB_STORE_MISSES.WALK_COMPLETED + DTLB_LOAD_MISSES.WALK_COMPLETED + ITLB_MISSES.WALK_COMPLETED ) ) / ( 2 * CORE_CLKS ),( ITLB_MISSES.WALK_DURATION:c1 + DTLB_LOAD_MISSES.WALK_DURATION:c1 + DTLB_STORE_MISSES.WALK_DURATION:c1 + 7 * ( DTLB_STORE_MISSES.WALK_COMPLETED + DTLB_LOAD_MISSES.WALK_COMPLETED + ITLB_MISSES.WALK_COMPLETED ) ) / CORE_CLKS,,,,( ITLB_MISSES.WALK_DURATION + DTLB_LOAD_MISSES.WALK_DURATION + DTLB_STORE_MISSES.WALK_DURATION ) / CORE_CLKS,,#NA,,Core_Metric,Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses,> 0.5,4.3,Mem;MemoryTLB,1.0,pub/v3.2,i,;perf,,,, +Info.Memory.TLB,Code_STLB_MPKI,,,,,,,,,,,,,,,,,,,1000 * ITLB_MISSES.WALK_COMPLETED / INST_RETIRED.ANY,,,,,,,,,,Metric,STLB (2nd level TLB) code speculative misses per kilo instruction (misses of any page-size that complete the page walk),,4.5,Fed;MemoryTLB,,,,,,,, +Info.Memory.TLB,Load_STLB_MPKI,,,,,,,,,,,,,,,,,,,1000 * DTLB_LOAD_MISSES.WALK_COMPLETED / INST_RETIRED.ANY,,,,,,,,,,Metric,STLB (2nd level TLB) data load speculative misses per kilo instruction (misses of any page-size that complete the page walk),,4.5,Mem;MemoryTLB,,,,,,,, +Info.Memory.TLB,Store_STLB_MPKI,,,,,,,,,,,,,,,,,,,1000 * DTLB_STORE_MISSES.WALK_COMPLETED / INST_RETIRED.ANY,,,,,,,,,,Metric,STLB (2nd level TLB) data store speculative misses per kilo instruction (misses of any page-size that complete the page walk),,4.5,Mem;MemoryTLB,,,,,,,, +Info.Memory.Core,L1D_Cache_Fill_BW_2T,,,,,,,,,,,,,,,,,,,,,,,,,L1D_Cache_Fill_BW,,#NA,,Core_Metric,Average per-core data fill bandwidth to the L1 data cache [GB / sec],,4.6,Mem;MemoryBW,,,i,,,,, +Info.Memory.Core,L2_Cache_Fill_BW_2T,,,,,,,,,,,,,,,,,,,,,,,,,L2_Cache_Fill_BW,,#NA,,Core_Metric,Average per-core data fill bandwidth to the L2 cache [GB / sec],,4.6,Mem;MemoryBW,,,i,,,,, +Info.Memory.Core,L3_Cache_Fill_BW_2T,,,,,,,,,,,,,,,,,,,,,,,,,L3_Cache_Fill_BW,,#NA,,Core_Metric,Average per-core data fill bandwidth to the L3 cache [GB / sec],,4.6,Mem;MemoryBW,,,i,,,,, +Info.Memory.Core,L3_Cache_Access_BW_2T,,,,,,,,,,,,,,,,,,,L3_Cache_Access_BW,,,,,,,,#NA,,Core_Metric,Average per-core data access bandwidth to the L3 cache [GB / sec],,4.7,Mem;MemoryBW;Offcore,,,i,,,,, +Info.Memory.Core,L2_Evictions_Silent_PKI,,,,,,,,,,,,,,,,,,1000 * L2_LINES_OUT.SILENT / Instructions,,,,,,,,,#NA,,Core_Metric,Rate of silent evictions from the L2 cache per Kilo instruction where the evicted lines are dropped (no writeback to L3 or memory),,4.4,L2Evicts;Mem;Server,,pub/v3.6,i,;perf,,,, +Info.Memory.Core,L2_Evictions_NonSilent_PKI,,,,,,,,,,,,,,,,,,1000 * L2_LINES_OUT.NON_SILENT / Instructions,,,,,,,,,#NA,,Core_Metric,Rate of non silent evictions from the L2 cache per Kilo instruction,,4.4,L2Evicts;Mem;Server,,pub/v3.6,i,;perf,,,, +Info.Memory.Latency,Load_L2_Miss_Latency,,,,,,,,,,,,,,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS.DEMAND_DATA_RD,,,,Clocks_Latency,Average Latency for L2 cache miss demand Loads,,4.5,Memory_Lat;Offcore,1000,,,;EDP,,,, +Info.Memory.Latency,Load_L3_Miss_Latency,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.L3_MISS_DEMAND_DATA_RD / OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD:u0x10 / OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD,,,,,,,,,,,,,,,,Clocks_Latency,Average Latency for L3 cache miss demand Loads,,4.5,Memory_Lat;Offcore,1000,,,;EDP,,,, +Info.Memory.Latency,Load_L2_MLP,,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD:c1,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_DATA_RD,,,,Metric,Average Parallel L2 cache miss demand Loads,,4.5,Memory_BW;Offcore,100,,,,,,, +Info.Memory.Latency,Data_L2_MLP,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD,,,,,,,,,,,,,,,,OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD,,,,Metric,Average Parallel L2 cache miss data reads,,4.6,Memory_BW;Offcore,100,,,,,,, +Info.Memory.Mix,Offcore_Read_Any_PKI,,,,,,,,1000 * OCR.READS_TO_CORE.ANY_RESPONSE / Instructions,,,,,,,,,,,,,,,,,,,#NA,,Metric,Off-core accesses per kilo instruction for reads-to-core requests (speculative; including in-core HW prefetches),,4.6,CacheHits;Offcore,,,,,,,, +Info.Memory.Mix,Offcore_Read_L3M_PKI,,,,,,,,1000 * OCR.READS_TO_CORE.L3_MISS / Instructions,,,,,,,,,,,,,,,,,,,#NA,,Metric,L3 cache misses per kilo instruction for reads-to-core requests (speculative; including in-core HW prefetches),,4.6,Offcore,,,,,,,, +Info.Memory.Mix,Offcore_Read_HBM_PKI,,,,,,,#NA if #Memory > 2 else 1000 * OCR.DEMAND_DATA_RD.PMM / Instructions,,,,,,,,,,,,,,,,,,,,#NA,,Metric,High-Bandwidth Memory (HBM) accesses per kilo instruction for reads-to-core requests (speculative; including in-core HW prefetches),,4.7,Offcore;Server,,,,,,,, +Info.Memory.Mix,Offcore_MWrite_Any_PKI,,,,,,,,1000 * OCR.MODIFIED_WRITE.ANY_RESPONSE / Instructions,,,,,,,,,,,,,,,,,,,#NA,,Metric,Off-core accesses per kilo instruction for modified write requests,,4.6,Offcore,,,,,,,, +Info.Memory.Mix,UC_Load_PKI,,,,,,,,,,,,,,,,,,,1000 * MEM_LOAD_MISC_RETIRED.UC / INST_RETIRED.ANY,,,,,,,,,,Metric,Un-cacheable retired load per kilo instruction,,4.6,Mem,,,,;EDP;perf,,,, +Info.Memory.Mix,Bus_Lock_PKI,,,,,,,,,,,,,1000 * SQ_MISC.BUS_LOCK / INST_RETIRED.ANY,,,,,,,,,,,,,,,,Metric,"""Bus lock"" per kilo instruction",,4.6,Mem,,,,;EDP;perf,,,, +Info.System,CPU_Utilization,,,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.REF_TSC / TSC,,Metric,Average CPU Utilization (percentage),,2.5,HPC;Summary,200,pub/v3,i,;perf,,,, +Info.System,CPUs_Utilized,,,,,,,,,,,,,,,,,,,,,,,,,,,Num_CPUs * CPU_Utilization,,Metric,Average number of utilized CPUs,,4.6,Summary,,pub/v4.6,,;EDP;perf,,,, +Info.System,Core_Frequency,,,,,,,,,,,,,,,,,,,,,,,,,,,Turbo_Utilization * TSC / #OneBillion / Time,,SystemMetric,Measured Average Core Frequency for unhalted processors [GHz],,4.6,Summary;Power,,pub/v3.4,i,;perf,,,, +Info.System,Uncore_Frequency,,,,,,,,,,,,,,,,,,,,,,,,,,Socket_CLKS / 1e9 / Time,,,,Measured Average Uncore Frequency for the SoC [GHz],,4.6,SoC,,,,,,,, +Info.System,GFLOPs,,,,,,,,,,,,,,,,,,,,,( #FLOP_Count / #OneBillion ) / Time,,#NA,,,,( #FLOP_Count / #OneBillion ) / Time,,Metric,"Giga Floating Point Operations Per Second. Aggregate across all supported options of: FP precisions, scalar and vector instructions, vector-width",,4.7,Cor;Flops;HPC,200,pub/v3,i,;EDP;perf,,,, +Info.System,GIOPs,,,,,,,,#NA,,,,,,,,,,,,,,,,,,,,,Metric,Giga Integer (matrix) Operations Per Second,,4.7,Cor;HPC;IntVector;Server,,pub/v4.6,,;EDP;perf,,,, +Info.System,TIOPs,,,,,,,,#NA,,,,,,,,,,,,,,,,,,,,,Metric,Tera Integer (matrix) Operations Per Second,,4.6,HPC;IntVector;Server,,pub/v4.6,,;perf,,,, +Info.System,Turbo_Utilization,,,,,,,,,,,,,,,,,,,,,,,,,,,CLKS / CPU_CLK_UNHALTED.REF_TSC,,Core_Metric,Average Frequency Utilization relative nominal frequency,,3.0,Power,10.0,pub/v3,i,;perf,,,, +Info.System,Power_License0_Utilization,,,,,,,,,#NA,,,,,CORE_POWER.LVL0_TURBO_LICENSE / CORE_CLKS,,,,CORE_POWER.LVL0_TURBO_LICENSE / 2 / CORE_CLKS if #SMT_on else CORE_POWER.LVL0_TURBO_LICENSE / CORE_CLKS,,,,,,,,,#NA,,Core_Metric,"Fraction of Core cycles where the core was running with power-delivery for baseline license level 0. This includes non-AVX codes, SSE, AVX 128-bit, and low-current AVX 256-bit codes.",,4.6,Power,1.0,,i,,,,, +Info.System,Power_License1_Utilization,,,,,,,,,#NA,,,,,CORE_POWER.LVL1_TURBO_LICENSE / CORE_CLKS,,,,CORE_POWER.LVL1_TURBO_LICENSE / 2 / CORE_CLKS if #SMT_on else CORE_POWER.LVL1_TURBO_LICENSE / CORE_CLKS,,,,,,,,,#NA,,Core_Metric,Fraction of Core cycles where the core was running with power-delivery for license level 1. This includes high current AVX 256-bit instructions as well as low current AVX 512-bit instructions.,> 0.5,4.6,Power,1.0,,i,,,,, +Info.System,Power_License2_Utilization,,,,,,,,,#NA,,,,,CORE_POWER.LVL2_TURBO_LICENSE / CORE_CLKS,,,,CORE_POWER.LVL2_TURBO_LICENSE / 2 / CORE_CLKS if #SMT_on else CORE_POWER.LVL2_TURBO_LICENSE / CORE_CLKS,,,,,,,,,#NA,,Core_Metric,Fraction of Core cycles where the core was running with power-delivery for license level 2 (introduced in SKX). This includes high current AVX 512-bit instructions.,> 0.5,4.6,Power,1.0,,i,,,,, +Info.System,SMT_2T_Utilization,,,,,,,,,,,,,1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_DISTRIBUTED if #SMT_on else 0,1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_CORE if #SMT_on else 0,,,,,,,,,,,,,1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0,,Core_Metric,Fraction of cycles where both hardware Logical Processors were active,,4.1,SMT,1.0,pub/v3,i,;EDP,,,, +Info.System,Kernel_Utilization,,,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD_P:SUP / CPU_CLK_UNHALTED.THREAD,,Metric,Fraction of cycles spent in the Operating System (OS) Kernel mode,> 0.05,4.2,OS,1.0,pub/v3,i,;perf,,,, +Info.System,Kernel_CPI,,,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD_P:SUP / INST_RETIRED.ANY_P:SUP,,Metric,Cycles Per Instruction for the Operating System (OS) Kernel mode,,4.3,OS,,pub/v4.3,i,;perf,,,, +Info.System,C0_Wait,,,,,,,,,CPU_CLK_UNHALTED.C0_WAIT / CLKS,,,,,,,,,,,,,,,,,,,,Metric,"Fraction of cycles the processor is waiting yet unhalted; covering legacy PAUSE instruction, as well as C0.1 / C0.2 power-performance optimized states",> 0.05,4.6,C0Wait,1.0,,i,;EDP;perf,,ZeroOk,Sample code of TPAUSE: https://github.com/torvalds/linux/blob/master/arch/x86/lib/delay.c#L105,"If running on Linux, please check the power control interface: https://github.com/torvalds/linux/blob/master/arch/x86/kernel/cpu/umwait.c and https://github.com/torvalds/linux/blob/master/Documentation/ABI/testing/sysfs-devices-system-cpu#L587" +Info.System,DRAM_BW_Use,,,,,,64 * ( UNC_HAC_ARB_TRK_REQUESTS.ALL + UNC_HAC_ARB_COH_TRK_REQUESTS.ALL ) / #OneBillion / Time,,,,,,,,,,,,,,,,,,,,( 64 * ( UNC_M_CAS_COUNT.RD + UNC_M_CAS_COUNT.WR ) / #OneBillion ) / Time,64 * ( UNC_ARB_TRK_REQUESTS.ALL + UNC_ARB_COH_TRK_REQUESTS.ALL ) / #OneMillion / Time / 1000,,GB/sec,Average external Memory Bandwidth Use for reads and writes [GB / sec],; $issueBW,4.7,HPC;MemOffcore;MemoryBW;SoC,200,pub/v3,i,;perf,,,, +Info.Memory.SoC,R2C_Offcore_BW,,,,,,,,64 * OCR.READS_TO_CORE.ANY_RESPONSE / 1e9 / Time,,,,,,,,,,,,,,,,,,,,,GB/sec,Average Off-core access BW for Reads-to-Core (R2C). R2C account for demand or prefetch load/RFO/code access that fill data into the Core caches.,,4.6,HPC;Mem;MemoryBW;SoC,,,,;EDP;perf,,,, +Info.Memory.SoC,R2C_L3M_BW,,,,,,,,64 * OCR.READS_TO_CORE.L3_MISS / 1e9 / Time,,,,,,,,,,,,,,,,,,,,,GB/sec,Average L3-cache miss BW for Reads-to-Core (R2C). This covering going to DRAM or other memory off-chip memory tears. See R2C_Offcore_BW.,,4.6,HPC;Mem;MemoryBW;SoC,,,,;EDP;perf,,,, +Info.Memory.SoC,R2C_DRAM_BW,,,,,,,,64 * OCR.READS_TO_CORE.DRAM / 1e9 / Time,,,,,,,,,,,,,,,,,,,,,GB/sec,Average DRAM BW for Reads-to-Core (R2C) covering for memory attached to local- and remote-socket. See R2C_Offcore_BW.,,4.6,HPC;Mem;MemoryBW;SoC,,,,;EDP;perf,,,, +Info.Memory.SoC,R2C_HBM_BW,,,,,,,#NA if #Memory > 2 else 64 * OCR.DEMAND_DATA_RD.PMM / 1e9 / Time,,,,,,,,,,,,,,,,,,,,,,GB/sec,Average HBM BW for Reads-to-Core. See R2C_Offcore_BW.,,4.7,HPC;Mem;MemoryBW;Server;SoC,,,,;EDP;perf,,,, +Info.System,MEM_Read_Latency,,,,,,#NA,,#OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD ) / ( Socket_CLKS / Time ),,,( UNC_ARB_TRK_OCCUPANCY.RD + UNC_ARB_DAT_OCCUPANCY.RD ) / UNC_ARB_TRK_REQUESTS.RD,#OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD ) / ( Socket_CLKS / Time ),,#NA,,,,#OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD ) / ( Socket_CLKS / Time ),#OneBillion * ( UNC_ARB_TRK_OCCUPANCY.DATA_READ / UNC_ARB_TRK_REQUESTS.DATA_READ ) / ( Socket_CLKS / Time ),,,#OneBillion * ( UNC_C_TOR_OCCUPANCY.MISS_OPCODE:opc=0x182 / UNC_C_TOR_INSERTS.MISS_OPCODE:opc=0x182 ) / ( Socket_CLKS / Time ),,,,"#OneBillion * ( ""UNC_C_TOR_OCCUPANCY.MISS_OPCODE/Match=0x182"" / ""UNC_C_TOR_INSERTS.MISS_OPCODE/Match=0x182"" ) / ( Socket_CLKS / Time )",#NA,,NanoSeconds,Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches. ([RKL+]memory-controller only),,4.5,Mem;MemoryLat;SoC,1000,pub/v3.4,i,;perf,,,, +Info.System,MEM_Parallel_Reads,,,,,,,,UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD:c1,,,UNC_ARB_DAT_OCCUPANCY.RD / UNC_ARB_DAT_OCCUPANCY.RD:c1,UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD:c1,#NA,#NA,,,,UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD:c1,UNC_ARB_TRK_OCCUPANCY.DATA_READ / UNC_ARB_TRK_OCCUPANCY.DATA_READ:c1,,,UNC_C_TOR_OCCUPANCY.MISS_OPCODE:opc=0x182 / UNC_C_TOR_OCCUPANCY.MISS_OPCODE:opc=0x182:c1,,,,"""UNC_C_TOR_OCCUPANCY.MISS_OPCODE/Match=0x182"" / ""UNC_C_TOR_OCCUPANCY.MISS_OPCODE/Match=0x182:c1""",#NA,,SystemMetric,Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches,,4.5,Mem;MemoryBW;SoC,100,pub/v3.4,i,;perf,,,, +Info.System,MEM_PMM_Read_Latency,,,,,,,,,,,,( #OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_PMM / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PMM ) / UNC_CHA_CLOCKTICKS:one_unit ) if #PMM_App_Direct else #NA,,,,( #OneBillion * ( UNC_M_PMM_RPQ_OCCUPANCY.ALL / UNC_M_PMM_RPQ_INSERTS ) / UNC_M_CLOCKTICKS:one_unit ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,NanoSeconds,Average latency of data read request to external 3D X-Point memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches,,4.6,MemOffcore;MemoryLat;SoC;Server,,pub/v3.5,i,;perf,,,, +Info.System,MEM_DRAM_Read_Latency,,,,,,,,,,,, #OneBillion * ( UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_DDR / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_DDR ) / UNC_CHA_CLOCKTICKS:one_unit,,,,,,#OneBillion * ( UNC_M_RPQ_OCCUPANCY / UNC_M_RPQ_INSERTS ) / UNC_M_CLOCKTICKS:one_unit,,,,,,,,,#NA,,NanoSeconds,Average latency of data read request to external DRAM memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches,,4.6,MemOffcore;MemoryLat;SoC;Server,,,i,,,,, +Info.System,PMM_Read_BW,,,,,,,,,,,,,,,,( ( 64 * UNC_M_PMM_RPQ_INSERTS / #OneBillion ) / Time ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,GB/sec,Average 3DXP Memory Bandwidth Use for reads [GB / sec],,4.6,MemOffcore;MemoryBW;SoC;Server,,pub/v3.5,i,;perf,,,, +Info.System,PMM_Write_BW,,,,,,,,,,,,,,,,( ( 64 * UNC_M_PMM_WPQ_INSERTS / #OneBillion ) / Time ) if #PMM_App_Direct else #NA,,,,,,,,,,,#NA,,GB/sec,Average 3DXP Memory Bandwidth Use for Writes [GB / sec],,4.6,MemOffcore;MemoryBW;SoC;Server,,pub/v3.5,i,;perf,,,, +Info.System,IO_Read_BW,,,,,,,,,,,,UNC_CHA_TOR_INSERTS.IO_PCIRDCUR * 64 / #OneBillion / Time,,,,,,( UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART0 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART1 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART2 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART3 ) * 4 / #OneBillion / Time,,,,,,,,,,,GB/sec,Average IO (network or disk) Bandwidth Use for Reads [GB / sec]. Bandwidth of IO reads that are initiated by end device controllers that are requesting memory from the CPU,,4.6,IoBW;MemOffcore;SoC;Server,,pub/v4,i,;perf,,,, +Info.System,IO_Write_BW,,,,,,,,( UNC_CHA_TOR_INSERTS.IO_ITOM + UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR ) * 64 / #OneBillion / Time,,,,( UNC_CHA_TOR_INSERTS.IO_HIT_ITOM + UNC_CHA_TOR_INSERTS.IO_MISS_ITOM + UNC_CHA_TOR_INSERTS.IO_HIT_ITOMCACHENEAR + UNC_CHA_TOR_INSERTS.IO_MISS_ITOMCACHENEAR ) * 64 / #OneBillion / Time,,,,,,( UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART0 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART1 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART2 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART3 ) * 4 / #OneBillion / Time,,,,,,,,,,,GB/sec,Average IO (network or disk) Bandwidth Use for Writes [GB / sec]. Bandwidth of IO writes that are initiated by end device controllers that are writing memory to the CPU,,4.6,IoBW;MemOffcore;SoC;Server,,pub/v4,i,;perf,,,, +Info.System,UPI_Data_Transmit_BW,,,,,,,,UNC_UPI_TxL_FLITS.ALL_DATA * 64 / 9 / 1000000,,,,,,,,,,,,,,,,,,,,,MB/sec,Cross-socket Ultra Path Interconnect (UPI) data transmit bandwidth for data only [MB / sec],,4.5,SoC;Server,,,,;EDP,,,, +Info.System,Power,,,,,,,,,,,,,,,,,,,,,,( FREERUN_PKG_ENERGY_STATUS * #Energy_Unit + 15.6 * FREERUN_DRAM_ENERGY_STATUS ) / ( #DurationTimeInSeconds * #OneMillion ),UNC_PKG_ENERGY_STATUS * #Energy_Unit / ( Time * #OneMillion ),( FREERUN_PKG_ENERGY_STATUS + FREERUN_DRAM_ENERGY_STATUS ) * #Energy_Unit / ( #DurationTimeInSeconds * #OneMillion ),UNC_PKG_ENERGY_STATUS * #Energy_Unit / ( Time * #OneMillion ),,#NA,,SystemMetric,Total package Power in Watts,,2.9,Power;SoC,200,pub/v3.2,i,,,,, +Info.System,Time,,,,,,,,,,,,,,,,,,,,,,,,,,,#DurationTimeInSeconds,,Seconds,Run duration time in seconds,< 1,4.0,Summary,,pub/v3,i,;EDP,,,, +Info.System,MUX,,,,,,,,,,,,,,,,,,,,,,,,,,,CPU_CLK_UNHALTED.THREAD_P / CPU_CLK_UNHALTED.THREAD,,Clocks,PerfMon Event Multiplexing accuracy indicator,( > 1.1 | < 0.9 ),3.1,Summary,,pub/v3,i,,,,, +Info.System,Socket_CLKS,,,,,,,,,,,,,,,,,,UNC_CHA_CLOCKTICKS:one_unit,,,,,,,,UNC_C_CLOCKTICKS:one_unit,UNC_CLOCK.SOCKET,,Count,Socket actual clocks when any core is active on that socket,,3.4,SoC,,pub/v3,i,;perf,,,, +Info.System,IpFarBranch,,,,,,,,,,,,,,,,,,,,,,,,,,,INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH_PS:USER,,Inst_Metric,"Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",< 1000000,4.3,Branches;OS,,pub/v3.6,i,;perf,,,, +.,auxiliary,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-,-,,2.5,,,pub/v3,-,,,,, +Aux,#Backend_Bound_Cycles,,,,,,,,,#NA,,,,CYCLE_ACTIVITY.STALLS_TOTAL + #Few_Uops_Executed_Threshold + EXE_ACTIVITY.BOUND_ON_STORES,,,,,,CYCLE_ACTIVITY.STALLS_TOTAL + #Few_Uops_Executed_Threshold + EXE_ACTIVITY.BOUND_ON_STORES,,( CYCLE_ACTIVITY.STALLS_TOTAL + UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,( #STALLS_TOTAL + ( UOPS_EXECUTED.CORE:c1 - #Few_Uops_Executed_Threshold ) / 2 - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ) if #SMT_on else ( #STALLS_TOTAL + UOPS_EXECUTED.CORE:c1 - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,( #STALLS_TOTAL + UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,( #STALLS_TOTAL + UOPS_DISPATCHED.THREAD:c1 - #Few_Uops_Executed_Threshold - #Frontend_RS_Empty_Cycles + RESOURCE_STALLS.SB ),,Count,,,4.4,,,pub,2,,,,, +Aux,#Br_DoI_Jumps,,,,,,,,,,,,,BR_INST_RETIRED.NEAR_TAKEN - BR_INST_RETIRED.COND_TAKEN - 2 * BR_INST_RETIRED.NEAR_CALL,,,,,,BR_INST_RETIRED.NEAR_TAKEN - ( BR_INST_RETIRED.COND_PS - BR_INST_RETIRED.NOT_TAKEN ) - 2 * BR_INST_RETIRED.NEAR_CALL,,,,,,,,,,Count,,,4.6,Branches,,,0,,,,, +Aux,#Branching_Retired,,,,,,,,,,,,,,,,,,,( BR_INST_RETIRED.ALL_BRANCHES + BR_INST_RETIRED.NEAR_CALL ) / SLOTS,,,,,,,,#NA,,Slots,,,4.7,,,,0,,,,, +Aux,#Serialize_Core,,,,,,,,,Core_Bound * ( Serializing_Operation + RS.EMPTY:u1 / CLKS * Ports_Utilized_0 ) / ##Core_Bound,,,,,,,,,,Core_Bound * ( Serializing_Operation + Core_Bound * RS_EVENTS.EMPTY_CYCLES / CLKS * Ports_Utilized_0 ) / ##Core_Bound,,,,,,,,,,Fraction,,,4.7,,,,0,,,,, +Aux,#Umisp,,,,,,,,,,,,,,,,,,,10 * Microcode_Sequencer * Other_Mispredicts / Branch_Mispredicts,,,,,,,,,,Fraction,,,4.7,MS,,pub/v4.6,0,,,,, +Aux,#Assist,,,,,,,,,,,,,,,,,,,( Microcode_Sequencer / ##Heavy_Operations ) * ( Assists / Microcode_Sequencer ),,,,,,,,,,Fraction,,,4.6,MS,,pub/v4.6,0,,,,, +Aux,#Assist_Frontend,,,,,,,,,( 1 - INST_RETIRED.REP_ITERATION / UOPS_RETIRED.MS:c1 ) * ( Fetch_Latency * ( MS_Switches + Branch_Resteers * ( Clears_Resteers + Mispredicts_Resteers * Other_Mispredicts / Branch_Mispredicts ) / ##Branch_Resteers ) / ##Fetch_Latency ),,,,,,,,,,#Assist * Fetch_Latency * ( MS_Switches + Branch_Resteers * ( Clears_Resteers + Mispredicts_Resteers * #Umisp ) / ##Branch_Resteers ) / ##Fetch_Latency,,,,,,,,,,Slots,,,4.6,MS,,pub/v4.6,0,,,,, +Aux,#Assist_Retired,,,,,,,,,,,,,,,,,,,#Assist * Heavy_Operations,,,,,,,,,,Slots,,,4.6,MS,,,0,,,,, +Aux,#Core_Bound_Cycles,,,,,,,,,,,,,,,,,,,Ports_Utilized_0 * CLKS + #Few_Uops_Executed_Threshold,,,,,,,,,,Count,,,4.7,PortsUtil,,pub/v4,3,,,,, +Aux,#Cycles_0_Ports_Utilized,,,,,,,,,,,,,#NA,,,,,,UOPS_EXECUTED.CORE_CYCLES_NONE / 2 if #SMT_on else CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY,,( UOPS_EXECUTED.CORE:i1:c1 ) / 2 if #SMT_on else ( CYCLE_ACTIVITY.STALLS_TOTAL - #Frontend_RS_Empty_Cycles ),,,,( UOPS_EXECUTED.CORE:i1:c1 ) / 2 if #SMT_on else ( #STALLS_TOTAL - #Frontend_RS_Empty_Cycles ),,,,Count,,,4.2,,,pub/v4.6,4,,,,, +Aux,#Cycles_1_Port_Utilized,,,,,,,,,,,,,#NA,,,,,,( UOPS_EXECUTED.CORE_CYCLES_GE_1 - UOPS_EXECUTED.CORE_CYCLES_GE_2 ) / 2 if #SMT_on else EXE_ACTIVITY.1_PORTS_UTIL,,( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC ),,( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ),,( UOPS_EXECUTED.CORE:c1 - UOPS_EXECUTED.CORE:c2 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC - UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC ),,,,Count,,,3.5,,,,4,,,,, +Aux,#Cycles_2_Ports_Utilized,,,,,,,,,,,,,#NA,,,,,,( UOPS_EXECUTED.CORE_CYCLES_GE_2 - UOPS_EXECUTED.CORE_CYCLES_GE_3 ) / 2 if #SMT_on else EXE_ACTIVITY.2_PORTS_UTIL,,( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC - UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC ),,( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ),,( UOPS_EXECUTED.CORE:c2 - UOPS_EXECUTED.CORE:c3 ) / 2 if #SMT_on else ( UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC - UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC ),,,,Count,,,3.5,,,,4,,,,, +Aux,#Cycles_3m_Ports_Utilized,,,,,,,,,,,,,#NA,,,,,,UOPS_EXECUTED.CORE_CYCLES_GE_3 / 2 if #SMT_on else UOPS_EXECUTED.CORE_CYCLES_GE_3,,( UOPS_EXECUTED.CORE:c3 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC,,( UOPS_EXECUTED.CORE:c3 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE:c3,,( UOPS_EXECUTED.CORE:c3 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC,,#NA,,Count,,,3.5,,,,4,,,,, +Aux,#DurationTimeInSeconds,,,,,,,,,,,,,,,,,,,,,,,,,,,DurationTimeInMilliSeconds / 1000,,Count,,,4.1,,,pub/v3,i,,,,, +Aux,#Exe_Ports,,,,,,,,,12,,,,10,,,,,,,,,,8,,,,6,,Constant,,,4.4,,,pub/v4.4,,,,,, +Aux,#Execute_Cycles,,,,,,,,,,,,,,,,,,,( UOPS_EXECUTED.CORE_CYCLES_GE_1 / 2 ) if #SMT_on else UOPS_EXECUTED.THREAD:c1,,( UOPS_EXECUTED.CORE:c1 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC,,( UOPS_EXECUTED.CORE:c1 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE:c1,,( UOPS_EXECUTED.CORE:c1 / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC,,( UOPS_DISPATCHED.CORE:c1 / 2 ) if #SMT_on else UOPS_DISPATCHED.CORE:c1,,Count,,,2.9,,,pub,i,,,,, +Aux,#FB_Factor,,,,,,,,,,,,,,,,,,,1 + #FBHit_per_L1Miss / 2,,,,,,,,#NA,,Metric,factor used for metrics associating fixed costs for FB Hits - according to probability theory if all FB Hits come at a random rate in original L1_Miss cost interval then the average cost for each one is 0.5 of the fixed cost,,4.1,,,,i,,,,, +Aux,#FBHit_per_L1Miss,,,,,,,,,,,,,,,,,,,MEM_LOAD_RETIRED.FB_HIT_PS / MEM_LOAD_RETIRED.L1_MISS_PS,,,,,,,,#NA,,Metric,,,4.5,,,pub,i,,,,, +Aux,#Fetched_Uops,,,,,,,,,,,,,UOPS_ISSUED.ANY,,,IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS,IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS,,IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS,,,,,,,,( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) ,,Count,,,4.5,,,pub,i,,,,, +Aux,#Few_Uops_Executed_Threshold,,,,,,,,,EXE_ACTIVITY.1_PORTS_UTIL + Retiring * EXE_ACTIVITY.2_PORTS_UTIL:u0xc,,,,,,,,,,EXE_ACTIVITY.1_PORTS_UTIL + Retiring * EXE_ACTIVITY.2_PORTS_UTIL,,UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC if ( IPC > 1.8 ) else UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC,,UOPS_EXECUTED.CORE:c3 if ( IPC > 1.8 ) else UOPS_EXECUTED.CORE:c2,,UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC if ( IPC > 1.8 ) else UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC,,UOPS_DISPATCHED.THREAD:c3 if ( IPC > 1.8 ) else UOPS_DISPATCHED.THREAD:c2,,Count,,,4.4,PortsUtil,,pub,2,,,,, +Aux,#FLOP_Count,,,,,,,,( 1 * FP_ARITH_INST_RETIRED.SCALAR + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * FP_ARITH_INST_RETIRED.8_FLOPS + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ),FP_ARITH_INST_RETIRED.SCALAR + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE,,,,FP_ARITH_INST_RETIRED.SCALAR + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * FP_ARITH_INST_RETIRED.8_FLOPS + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE,( 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 ),FP_ARITH_INST_RETIRED.SCALAR + 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_RETIRED2.128BIT_PACKED_BF16 + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * ( FP_ARITH_INST_RETIRED2.256BIT_PACKED_BF16 + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) + 32 * FP_ARITH_INST_RETIRED2.512BIT_PACKED_BF16,,,FP_ARITH_INST_RETIRED.SCALAR + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * FP_ARITH_INST_RETIRED.8_FLOPS + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE,,,FP_ARITH_INST_RETIRED.SCALAR + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE,,#NA,,,,( 1 * ( FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE ) + 2 * FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + 4 * ( FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE ) + 8 * SIMD_FP_256.PACKED_SINGLE ),,Count,Floating Point computational (arithmetic) Operations Count,,4.7,Flops;HPC,,pub,i,,,,, +Aux,#FP_Arith_Scalar,,,,,,,,FP_ARITH_INST_RETIRED.SCALAR + FP_ARITH_INST_RETIRED2.SCALAR,,,,,,,,,,,,,FP_ARITH_INST_RETIRED.SCALAR_SINGLE:u0x03,,#NA,,,,FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE,,Count,Floating Point computational (arithmetic) Operations Count,,4.5,Flops;HPC,,pub,i,,,,, +Aux,#FP_Arith_Vector,,,,,,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc + FP_ARITH_INST_RETIRED2.VECTOR,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0x3c,,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc,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 + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc + FP_ARITH_INST_RETIRED2.128BIT_PACKED_BF16:u0xe0,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0xfc,,,FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE:u0x3c,,#NA,,,,FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE,,Count,Floating Point computational (arithmetic) Operations Count,,4.6,Flops;HPC,,pub,i,,,,, +Aux,#Frontend_RS_Empty_Cycles,,,,,,,,,,,,,,,,,,,#NA,,,,,,,,RS_EVENTS.EMPTY_CYCLES if ( Fetch_Latency > 0.1 ) else 0,,Count,,,3.1,,,pub,2,,,,, +Aux,#Frontend_Latency_Cycles,,,,,,,,,,,,,,,,,,,,,#NA,,,,,,"min( CPU_CLK_UNHALTED.THREAD , IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE )",,Count,,,3.0,,,pub,2,,,,, +Aux,#HighIPC,,,,,,,,,,,,,,,,,,,,,,,,,,,IPC / #Pipeline_Width,,Metric,,> 0.35,3.5,,,pub,2,,,,, +Aux,#ITLB_Miss_Cycles,,,,,,,,,,,,,,,,,,,#NA,,( 14 * ITLB_MISSES.STLB_HIT + ITLB_MISSES.WALK_DURATION:c1 + 7 * ITLB_MISSES.WALK_COMPLETED ),,( 14 * ITLB_MISSES.STLB_HIT + ITLB_MISSES.WALK_DURATION ),,,,( 12 * ITLB_MISSES.STLB_HIT + ITLB_MISSES.WALK_DURATION ),,Count,,,4.1,MemoryTLB,,pub,3,,,,, +Aux,#L2_Bound_Ratio,,,,,,,,,#NA,,,,,,,,,,( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CLKS,,,,,,,,#NA,,Fraction,,,3.1,,,pub,3,,,,, +Aux,#Light_Ops_Sum,,,,,,,,,FP_Arith + Int_Operations + Memory_Operations + Fused_Instructions + Non_Fused_Branches,,,,,FP_Arith + Memory_Operations + Branch_Instructions,,,,,FP_Arith + Memory_Operations + Fused_Instructions + Non_Fused_Branches ,,,,,,,,,,Count,,,4.7,,,pub/v4.3,3,,,,, +Aux,#LOAD_L1_MISS,,,,,,,,,,,,,,,,,,,#NA,,,,MEM_LOAD_UOPS_RETIRED.L2_HIT_PS + MEM_LOAD_UOPS_RETIRED.L3_HIT_PS + MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT_PS + MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS + MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS_PS,,MEM_LOAD_UOPS_RETIRED.L2_HIT_PS + MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT_PS + MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS + MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS_PS,,#NA,,Count,,,4.1,,,pub,i,,,,, +Aux,#LOAD_L1_MISS_NET,,,,,,#NA,,,,,,,,,,,,,MEM_LOAD_RETIRED.L1_MISS_PS,,,#LOAD_L1_MISS + MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM_PS + MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM_PS + MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS + MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD_PS,#LOAD_L1_MISS + MEM_LOAD_UOPS_RETIRED.L3_MISS_PS,#LOAD_L1_MISS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM_PS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM_PS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS + MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD_PS,#LOAD_L1_MISS + MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS,,#NA,,Count,,,4.0,,,pub,i,,,,, +Aux,#LOAD_L2_HIT,,,,,,#NA,,,#NA,,,,,,,,,,MEM_LOAD_RETIRED.L2_HIT_PS * ( 1 + #FBHit_per_L1Miss ),,,,,,,,#NA,,Count,,,4.3,,,pub/v4.2,i,,,,, +Aux,#LOAD_L3_HIT,,,,,,#NA,,,,,,,,,,,,,MEM_LOAD_RETIRED.L3_HIT_PS * #FB_Factor,,,,MEM_LOAD_UOPS_RETIRED.L3_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,,,,i,,,,, +Aux,#LOAD_LCL_MEM,,MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD + MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * ( 1 - #True_XSNP_HitM_Fraction ),,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.4,Server,,pub,i,,,,, +Aux,#LOAD_LCL_PMM,,,,,,,,,,,,,,,,MEM_LOAD_RETIRED.LOCAL_PMM_PS * ( 1 + #FBHit_per_L1Miss ),,,,,,,,,,,#NA,,Count,,,3.5,Server,,pub,i,,,,, +Aux,#LOAD_RMT_FWD,,,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_FWD_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_FWD_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.1,Server,,pub,i,,,,, +Aux,#LOAD_RMT_HITM,,,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.1,Server,,pub,i,,,,, +Aux,#LOAD_RMT_MEM,,,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS * ( 1 + #FBHit_per_L1Miss ),,,,MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,,#NA,,Count,,,3.1,Server,,pub,i,,,,, +Aux,#LOAD_RMT_PMM,,,,,,,,,,,,,,,,MEM_LOAD_L3_MISS_RETIRED.REMOTE_PMM_PS * ( 1 + #FBHit_per_L1Miss ),,,,,,,,,,,#NA,,Count,,,3.5,Server,,pub,i,,,,, +Aux,#LOAD_XSNP_HIT,,,,,,#NA,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD + MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * ( 1 - #True_XSNP_HitM_Fraction ),,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS + MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS * ( 1 - #True_XSNP_HitM_Fraction ),MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS,,,,MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,Offcore,,,i,,,,, +Aux,#LOAD_XSNP_HITM,,,,,,#NA,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * #True_XSNP_HitM_Fraction,,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS * #True_XSNP_HitM_Fraction,MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS,,,,MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,Offcore,,,i,,,,, +Aux,#LOAD_XSNP_MISS,,,,,,#NA,,,,,,,,,,,,,MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS_PS,,,,MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_MISS_PS * ( 1 + MEM_LOAD_UOPS_RETIRED.HIT_LFB_PS / #LOAD_L1_MISS_NET ),,#NA,,Count,,,4.1,,,,i,,,,, +Aux,#MEM_Bound_Ratio,,,,,,,,,MEMORY_ACTIVITY.STALLS_L3_MISS / CLKS,,,,,,,,,,CYCLE_ACTIVITY.STALLS_L3_MISS / CLKS + #L2_Bound_Ratio - L2_Bound,,,,,,,,,,Fraction,,,4.1,,,pub,3,,,,, +Aux,#Mem_DDR_Hit_Fraction,,,,,,,,,,,,,,,,( 19 * #LOAD_RMT_MEM + 10 * ( #LOAD_LCL_MEM + #LOAD_RMT_FWD + #LOAD_RMT_HITM ) ) / ( ( 19 * #LOAD_RMT_MEM + 10 * ( #LOAD_LCL_MEM + #LOAD_RMT_FWD + #LOAD_RMT_HITM ) ) + ( 25 * #LOAD_LCL_PMM + 33 * #LOAD_RMT_PMM ) ),,,,,,,,,,,#NA,,Fraction,,,3.5,Server,,pub,3,,,,, +Aux,#Mem_L2_Store_Cost,,,,,,,,,,,,,10,,,,,11,,,,,,,9,,,,Constant,,,4.0,,,,4,,,,, +Aux,#Mem_L3_Hit_Fraction,,,,,,,,,,,,,,,,,,,#NA,,,,MEM_LOAD_UOPS_RETIRED.L3_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.L3_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_RETIRED.L3_MISS_PS ),,MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS ),MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_RETIRED.LLC_MISS_PS ),MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS / ( MEM_LOAD_UOPS_RETIRED.LLC_HIT_PS + #Mem_L3_Weight * MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS ),,Fraction,,,3.0,,,pub,3,,,,, +Aux,#Mem_Lock_St_Fraction,,,,,,,,,,,,,,,,,,,MEM_INST_RETIRED.LOCK_LOADS_PS / MEM_INST_RETIRED.ALL_STORES_PS,,,,,,MEM_UOPS_RETIRED.LOCK_LOADS_PS / MEM_UOPS_RETIRED.ALL_STORES_PS,,,,Fraction,,,3.0,,,,4,,,,, +Aux,#Memory_Bound_Fraction,,,,,,,,,#NA,,,,,,,,,,( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / #Backend_Bound_Cycles,,( CYCLE_ACTIVITY.STALLS_MEM_ANY + RESOURCE_STALLS.SB ) / #Backend_Bound_Cycles,,,,,,( #STALLS_MEM_ANY + RESOURCE_STALLS.SB ) / #Backend_Bound_Cycles,,Fraction,,,4.0,,,pub,2,,,,, +Aux,#Mispred_Clears_Fraction,,,,,,,,,Branch_Mispredicts / Bad_Speculation,,,,,,,,,,,,,,,,,,BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT ),,Fraction,,,4.4,BrMispredicts,,pub,2,,,,, +Aux,#OCR_all_rfo_l3_hit_snoop_hitm,,,,,,,,,,,,,#NA,,,OCR.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE + OCR.PF_L2_RFO.L3_HIT.HITM_OTHER_CORE,,OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.HITM_OTHER_CORE + OFFCORE_RESPONSE.PF_L2_RFO.L3_HIT.HITM_OTHER_CORE,OFFCORE_RESPONSE.DEMAND_RFO.L3_HIT.SNOOP_HITM,,,,,,,,,,Count,,,4.0,Offcore,,,i,,,,, +Aux,#OCR_all_rfo_l3_miss_remote_hitm,,,,,,,,,,,,,#NA,,,OCR.DEMAND_RFO.L3_MISS.REMOTE_HITM + OCR.PF_L2_RFO.L3_MISS.REMOTE_HITM,,OFFCORE_RESPONSE.DEMAND_RFO.L3_MISS.REMOTE_HITM + OFFCORE_RESPONSE.PF_L2_RFO.L3_MISS.REMOTE_HITM,,,,,,,,,,,Count,,,4.0,Offcore;Server,,,i,,,,, +Aux,#ORO_Demand_RFO_C1,,,,,,,,,,,,,,,,,,,,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO )",,,,Count,,,2.9,Offcore,,,4,,,,, +Aux,#ORO_DRD_Any_Cycles,,,,,,,,,,,,,,,,,,,,,,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD )",,Count,,,3.1,Offcore,,pub,4,,,,, +Aux,#ORO_DRD_BW_Cycles,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.DATA_RD:c4 )",,,,,,,,,,,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD:c4 )",,,,,,"min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD:c6 )",,Count,,,3.1,Offcore,,pub,4,,,,, +Aux,#SQ_Full_Cycles,,,,,,,,,,,,,#NA,( SQ_MISC.SQ_FULL:c1 / 2 ) if #SMT_on else SQ_MISC.SQ_FULL:c1,,,,,,,,,,,( OFFCORE_REQUESTS_BUFFER.SQ_FULL / 2 ) if #SMT_on else OFFCORE_REQUESTS_BUFFER.SQ_FULL,,,,Count,,,4.0,Offcore,,,4,,,,, +Aux,#STALLS_MEM_ANY,,,,,,,,,,,,,,,,,,,,,#NA,,,,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.STALLS_LDM_PENDING )",,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.STALLS_L1D_PENDING )",,Count,,,3.1,,,pub,2,,,,, +Aux,#STALLS_TOTAL,,,,,,,,,,,,,,,,,,,,,#NA,,,,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.CYCLES_NO_EXECUTE )",,"min( CPU_CLK_UNHALTED.THREAD , CYCLE_ACTIVITY.CYCLES_NO_DISPATCH )",,Count,,,2.9,,,pub,2,,,,, +Aux,#Store_L2_Hit_Cycles,,,,,,,,,MEM_STORE_RETIRED.L2_HIT * #Mem_L2_Store_Cost * ( 1 - #Mem_Lock_St_Fraction ),,,,,,,,,,,,,,,,L2_RQSTS.RFO_HIT * #Mem_L2_Store_Cost * ( 1 - #Mem_Lock_St_Fraction ),,#NA,,Count,,,3.1,,,,4,,,,, +Aux,#True_XSNP_HitM_Fraction,,,,,,,,,,OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM / ( OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM + OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD ),,OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM / ( OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM + OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD ),,,,OCR.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE / ( OCR.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE + OCR.DEMAND_DATA_RD.L3_HIT.HIT_OTHER_CORE_FWD ),,OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE / ( OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.HITM_OTHER_CORE + OFFCORE_RESPONSE.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD ),,,,,,,,,#NA,,Fraction,,,3.5,Offcore,,,3,,,,, +Aux,#Mem_L3_Weight,,,,,,,,,,,,,,,,,,,#NA,,,,,,,,7,,Constant,,,2.5,,,pub,-,,,,, +Aux,#Mem_STLB_Hit_Cost,,,,,,,,,,,,,7,,,,,,9,,,,8,,,,7,,Constant,,,4.2,MemoryTLB,,pub,4,,,,, +Aux,#Mem_XSNP_HitM_Cost,,,,,,,,80 * Core_Frequency,28 * Core_Frequency,54 * Core_Frequency,,48 * Core_Frequency,32.5 * Core_Frequency,,,,,47.5 * Core_Frequency,22 * Core_Frequency,,,,,,60,,,,NanoSeconds,,,4.2,,,,4,,,,, +Aux,#Mem_XSNP_Hit_Cost,,,,,,,,79.5 * Core_Frequency,27 * Core_Frequency,53 * Core_Frequency,,47.5 * Core_Frequency,27 * Core_Frequency,,,,,47.5 * Core_Frequency,20 * Core_Frequency,,,,,,43,,,,NanoSeconds,,,4.2,,,,4,,,,, +Aux,#Mem_XSNP_None_Cost,,,,,,,,37 * Core_Frequency,12 * Core_Frequency,22.5 * Core_Frequency,,23 * Core_Frequency,12.5 * Core_Frequency,,,,,20.5 * Core_Frequency,10 * Core_Frequency,,,,,41,29,,,,NanoSeconds,,,4.2,,,,4,,,,, +Aux,#Mem_Local_DRAM_Cost,,,,,,,,108 * Core_Frequency,,,,66.5 * Core_Frequency,,,,,,80 * Core_Frequency,,,,,,200,,,,,NanoSeconds,,,4.2,Server,,,5,,,,, +Aux,#Mem_Remote_DRAM_Cost,,,,,,,,186 * Core_Frequency,,,,131 * Core_Frequency,,,,,,147.5 * Core_Frequency,,,,,,310,,,,,NanoSeconds,,,4.2,Server,,,5,,,,, +Aux,#Mem_Remote_HitM_Cost,,,,,,,,172.5 * Core_Frequency,,,,120 * Core_Frequency,,,,,,110 * Core_Frequency,,,,,,200,,,,,NanoSeconds,,,4.2,Server,,,5,,,,, +Aux,#Mem_Remote_Fwd_Cost,,,,,,,,172.5 * Core_Frequency,,,,120 * Core_Frequency,,,,,,110 * Core_Frequency,,,,,,180,,,,,NanoSeconds,,,4.2,Server,,,5,,,,, +Aux,#Mem_L2_Hit_Cost,,,,,,,,4 * Core_Frequency,3 * Core_Frequency,5 * Core_Frequency,,4 * Core_Frequency,,,,,,,3.5 * Core_Frequency,,,,,180,,,,,NanoSeconds,,,4.2,,,,5,,,,, +Aux,#BAClear_Cost,,,,,,,,,#NA,,,,10,,,,,,9,,,,,,,,12,,Constant,,,4.4,,,pub,i,,,,, +Aux,#MS_Switches_Cost,,,,,,,,,,,,,,3,,,,,,,,,2,,,,3,,Constant,,,4.0,,,pub,3,,,,, +Aux,#Avg_Assist_Cost,,,,,,,,,( 99 *3 + 63 + 30 ) / 5,,,,,,,,,,34,,,,,,66,,,,Constant,,,4.6,,,pub/v4.6,3,,,,, +Aux,#PERF_METRICS_SUM,,,,,,,,,,,,,PERF_METRICS.FRONTEND_BOUND + PERF_METRICS.BAD_SPECULATION + PERF_METRICS.RETIRING + PERF_METRICS.BACKEND_BOUND,,,,,,,,,,,,,,#NA,,Count,,,4.1,TmaL1,,pub/v4,1,;perf,,,, +Aux,#Pipeline_Width,,,,,,,,,6,,,,5,,,,,,,,,,,,,,4,,Constant,,,4.1,TmaL1,,pub,1,;perf,,,, +Aux,#Recovery_Cycles,,,,,,,,,#NA,,,,,#NA,,,,,,,,,,,,,( INT_MISC.RECOVERY_CYCLES_ANY / 2 ) if #SMT_on else INT_MISC.RECOVERY_CYCLES,,Count,,,4.2,,,pub,1,,,,, +Aux,#Retire_Fraction,,,,,,,,,,,,,UOPS_RETIRED.SLOTS / UOPS_ISSUED.ANY,,,,,,,,,,,,,,#Retired_Slots / UOPS_ISSUED.ANY,,Fraction,,,4.6,BrMispredicts,,pub,2,,,,, +Aux,#Retired_Slots,,,,,,,,,,,,,Retiring * SLOTS,,,,,,,,,,,,,,UOPS_RETIRED.RETIRE_SLOTS,,Count,Retired slots per Logical Processor,,4.1,TmaL1,,pub,1,;perf,,,, +Aux,#OneMillion,,,,,,,,,,,,,,,,,,,,,,,,,,,1000000,,Constant,,,2.6,,,pub,i,,,,, +Aux,#OneBillion,,,,,,,,,,,,,,,,,,,,,,,,,,,1000000000,,Constant,,,3.0,,,pub,i,,,,, +Aux,#Energy_Unit,,,,,,,,,,,,,,,,,,,,,,,61,,15.6,,,,Constant,,,3.0,,,pub,i,,,,, +Aux,#Errata_Whitelist,,,,,,#NA,,SPR121;SPR103,ADL038,,,,#NA,,,,,,SKL091,,BDE69;BDE70,,,,,,,,Constant,,,4.7,,,pub,i,;toplev,,,, +Aux,#SMT_on,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,SystemParameter,whether Simultanous Multi Threading (SMT) is enabled (in BIOS),,2.7,SMT;Summary,,pub/v3,1,,EDP ? system.sockets[0][0].size > 1 : perf ? /sys/devices/system/cpu/smt/control : Intel-way-SMT-on,,, +Aux,#Base_Frequency,,,,,,,,,,,,,,,,,,,,,,,,,,,#NA,,ExternalParameter,Base frequency of the CPU in MHz (max non-turbo frequency in CPU brand string). This is an input parameter by the invoking tool. Negative value (of Turbo_Utilization) is reported by default to warn the user.,,3.4,Summary,,pub/v3.4,i,,,,, +Aux,Num_CPUs,,,,,,,,224 if #SMT_on else 112,24 if #SMT_on else 16,,,160 if #SMT_on else 80,,,,112 if #SMT_on else 56,,,,,,,,,,,8 if #SMT_on else 4,,SystemParameter,Number of logical processors (enabled or online) on the target system,,4.6,Summary,,pub/v4.6,,,EDP ? system.sockets[0].cpus.count : perf ? Linux-way-Num-CPUs : Intel-way-Num-CPUs,,, +Aux,#Memory,,,,,,,3 if #HBM_Only else 2,,,,,,,,,1,,,,,,,,,,,#NA,,ExternalParameter,,,4.7,Server,,pub/v3.5,3,,,,, +Aux,#PMM_App_Direct,,,,,,,,,,,,,,,,1 if #Memory == 1 else 0,,,,,,,,,,,#NA,,ExternalParameter,,,4.5,Server,,pub,3,,,,, +Aux,#HBM,,,,,,,,1 if #Memory > 1 else 0,,,,,,,,,,,,,,,,,,,,,ExternalParameter,,,4.7,Server,,pub/v4.6,,,,,, +Aux,#HBM_Only,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,SystemParameter,,,4.7,Server,,pub,,,All-DIMM-slots-are-empty,,, +Aux,DurationTimeInMilliSeconds,,,,,,,,,,,,,,,,,,,,,,,,,,,,,SystemParameter,The duration time in milli-seconds of the profile,,4.2,Summary,,pub,,;EDP;vtune,EDP ? 1000 : duration-time,,, +Aux,#DIV_AUX,,,,,,,,,ARITH.DIV_ACTIVE - ( CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS ),,,,,,,,,,ARITH.DIVIDER_ACTIVE - ( CYCLE_ACTIVITY.STALLS_TOTAL - CYCLE_ACTIVITY.STALLS_MEM_ANY ),,,,,,,,,,Count,,,4.7,,,,3,,,,, From 9a5f1635b8921ec30fbedc59eccadc7c65c5f2aa Mon Sep 17 00:00:00 2001 From: ayasini <101363609+ayasini@users.noreply.github.com> Date: Mon, 12 Feb 2024 01:22:27 +0200 Subject: [PATCH 2/2] TMA-4.7 release, full flavor, xls format --- TMA_Metrics-4.5-full.xlsx | Bin 0 -> 123533 bytes TMA_Metrics-full.xlsx | Bin 123533 -> 190553 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 TMA_Metrics-4.5-full.xlsx diff --git a/TMA_Metrics-4.5-full.xlsx b/TMA_Metrics-4.5-full.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..437e632696faac4efe816644a0bd4ccf58b641af GIT binary patch literal 123533 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

MUyFDxAfeW1}7U_ea)qop;C^A@yVc; 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 literal 0 HcmV?d00001 diff --git a/TMA_Metrics-full.xlsx b/TMA_Metrics-full.xlsx index 437e632696faac4efe816644a0bd4ccf58b641af..1cc5dbc31bbf233d84a94c5a90bbdf740269590d 100755 GIT binary patch literal 190553 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%0AW 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

MUyFDxAfeW1}7U_ea)qop;C^A@yVc; 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