PAPI  5.0.1.0
map-core2-extreme.c
Go to the documentation of this file.
00001 /****************************/
00002 /* THIS IS OPEN SOURCE CODE */
00003 /****************************/
00004 
00005 /* 
00006 * File:    map-core2-extreme.c
00007 * Author:  George Neville-Neil
00008 *          gnn@freebsd.org
00009 *          Harald Servat
00010 *          redcrash@gmail.com
00011 */
00012 
00013 #include "freebsd.h"
00014 #include "papiStdEventDefs.h"
00015 #include "map.h"
00016 
00017 
00018 /****************************************************************************
00019  CORE2_EXTREME SUBSTRATE 
00020  CORE2_EXTREME SUBSTRATE 
00021  CORE2_EXTREME SUBSTRATE
00022  CORE2_EXTREME SUBSTRATE
00023  CORE2_EXTREME SUBSTRATE
00024 ****************************************************************************/
00025 
00026 /*
00027     NativeEvent_Value_Core2ExtremeProcessor must match Core2ExtremeProcessor_info 
00028 */
00029 
00030 Native_Event_LabelDescription_t Core2ExtremeProcessor_info[] =
00031 {
00032     {"BACLEARS", "The number of times the front end is resteered."},
00033     {"BOGUS_BR", "The number of byte sequences mistakenly detected as taken branch instructions."},
00034     {"BR_BAC_MISSP_EXEC", "The number of branch instructions that were mispredicted when decoded."},
00035     {"BR_CALL_MISSP_EXEC", "The number of mispredicted CALL instructions that were executed."},
00036     {"BR_CALL_EXEC", "The number of CALL instructions executed."},
00037     {"BR_CND_EXEC", "The number of conditional branches executed, but not necessarily retired."},
00038     {"BR_CND_MISSP_EXEC", "The number of mispredicted conditional branches executed."},
00039     {"BR_IND_CALL_EXEC", "The number of indirect CALL instructions executed."},
00040     {"BR_IND_EXEC", "The number of indirect branch instructions executed."},
00041     {"BR_IND_MISSP_EXEC", "The number of mispredicted indirect branch instructions executed."},
00042     {"BR_INST_DECODED", "The number of branch instructions decoded."},
00043     {"BR_INST_EXEC", "The number of branches executed, but not necessarily retired."},
00044     {"BR_INST_RETIRED.ANY", "The number of branch instructions retired.  This is an architectural performance event."},
00045     {"BR_INST_RETIRED.MISPRED", "The number of mispredicted branch instructions retired.  This is an architectural performance event."},
00046     {"BR_INST_RETIRED.MISPRED_NOT_TAKEN", "The number of not taken branch instructions retired that were mispredicted."},
00047     {"BR_INST_RETIRED.MISPRED_TAKEN", "The number taken branch instructions retired that were mispredicted."},
00048     {"BR_INST_RETIRED.PRED_NOT_TAKEN", "The number of not taken branch instructions retired that were correctly predicted."},
00049     {"BR_INST_RETIRED.PRED_TAKEN", "The number of taken branch instructions retired that were correctly predicted."},
00050     {"BR_INST_RETIRED.TAKEN", "The number of taken branch instructions retired."},
00051     {"BR_MISSP_EXEC", "The number of mispredicted branch instructions that were executed."},
00052     {"BR_RET_MISSP_EXEC", "The number of mispredicted RET instructions executed."},
00053     {"BR_RET_BAC_MISSP_EXEC", "The number of RET instructions executed that were mispredicted at decode time."},
00054     {"BR_RET_EXEC", "The number of RET instructions executed."},
00055     {"BR_TKN_BUBBLE_1", "The number of branch predicted taken with bubble 1."},
00056     {"BR_TKN_BUBBLE_2", "The number of branch predicted taken with bubble 2."},
00057     {"BUSQ_EMPTY", "The number of cycles during which the core did not have any pending transactions in the bus queue."},
00058     {"BUS_BNR_DRV", "Number of Bus Not Ready signals asserted on the bus."},
00059     {"BUS_DATA_RCV", "Number of bus cycles during which the processor is receiving data."},
00060     {"BUS_DRDY_CLOCKS", "The number of bus cycles during which the Data Ready signal is asserted on the bus."},
00061     {"BUS_HIT_DRV", "The number of bus cycles during which the processor drives the HIT# pin."},
00062     {"BUS_HITM_DRV", "The number of bus cycles during which the processor drives the HITM# pin."},
00063     {"BUS_IO_WAIT", "The number of core cycles during which I/O requests wait in the bus queue."},
00064     {"BUS_LOCK_CLOCKS", "The number of bus cycles during which the LOCK signal was asserted on the bus."},
00065     {"BUS_REQUEST_OUTSTANDING", "The number of pending full cache line read transactions on the bus occuring in each cycle."},
00066     {"BUS_TRANS_ANY", "The number of bus transactions of any kind."},
00067     {"BUS_TRANS_BRD", "The number of burst read transactions."},
00068     {"BUS_TRANS_BURST", "The number of burst transactions."},
00069     {"BUS_TRANS_DEF", "The number of deferred bus transactions."},
00070     {"BUS_TRANS_IFETCH", "The number of instruction fetch full cache line bus transactions."},
00071     {"BUS_TRANS_INVAL", "The number of invalidate bus transactions."},
00072     {"BUS_TRANS_IO", "The number of completed I/O bus transaactions due to IN and OUT instructions."},
00073     {"BUS_TRANS_MEM", "The number of memory bus transactions."},
00074     {"BUS_TRANS_P", "The number of partial bus transactions."},
00075     {"BUS_TRANS_PWR", "The number of partial write bus transactions."},
00076     {"BUS_TRANS_RFO", "The number of Read For Ownership bus transactions."},
00077     {"BUS_TRANS_WB", "The number of explicit writeback bus transactions due to dirty line evictions."},
00078     {"CMP_SNOOP", "The number of times the L1 data cache is snooped by the other core in the same processor."},
00079     {"CPU_CLK_UNHALTED.BUS", "The number of bus cycles when the core is not in the halt state. This is an architectural performance event."},
00080     {"CPU_CLK_UNHALTED.CORE_P", "The number of core cycles while the core is not in a halt state.  This is an architectural performance event."},
00081     {"CPU_CLK_UNHALTED.NO_OTHER", "The number of bus cycles during which the core remains unhalted and the other core is halted."},
00082     {"CYCLES_DIV_BUSY", "The number of cycles the divider is busy.  This event is only available on PMC0."},
00083     {"CYCLES_INT_MASKED", "The number of cycles during which interrupts are disabled."},
00084     {"CYCLES_INT_PENDING_AND_MASKED", "The number of cycles during which there were pending interrupts while interrupts were disabled."},
00085     {"CYCLES_L1I_MEM_STALLED", "The number of cycles for which an instruction fetch stalls."},
00086     {"DELAYED_BYPASS.FP", "The number of floating point operations that used data immediately after the data was generated by a non floating point execution unit."},
00087     {"DELAYED_BYPASS.LOAD", "The number of delayed bypass penalty cycles that a load operation incurred."},
00088     {"DELAYED_BYPASS.SIMD", "The number of times SIMD operations use data immediately after data, was generated by a non-SIMD execution unit."},
00089     {"DIV", "The number of divide operations executed."},
00090     {"DTLB_MISSES.ANY", "The number of Data TLB misses, including misses that result from speculative accesses."},
00091     {"DTLB_MISSES.L0_MISS_LD", "The number of level 0 DTLB misses due to load operations."},
00092     {"DTLB_MISSES.MISS_LD", "The number of Data TLB misses due to load operations."},
00093     {"DTLB_MISSES.MISS_ST", "The number of Data TLB misses due to store operations."},
00094     {"EIST_TRANS", "The number of Enhanced Intel SpeedStep Technology transitions."},
00095     {"ESP.ADDITIONS", "The number of automatic additions to the esp register."},
00096     {"ESP.SYNCH", "The number of times the esp register was explicitly used in an address expression after it is implicitly used by a PUSH or POP instruction."},
00097     {"EXT_SNOOP", "The number of snoop responses to bus transactions."},
00098     {"FP_ASSIST", "The number of floating point operations executed that needed a microcode assist."},
00099     {"FP_COMP_OPS_EXE", "The number of floating point computational micro-ops executed.  The event is available only on PMC0."},
00100     {"FP_MMX_TRANS_TO_FP", "The number of transitions from MMX instructions to floating point instructions."},
00101     {"FP_MMX_TRANS_TO_MMX", "The number of transitions from floating point instructions to MMX instructions."},
00102     {"HW_INT_RCV", "The number of hardware interrupts recieved."},
00103     {"IDLE_DURING_DIV", "The number of cycles the divider is busy and no other execution unit or load operation was in progress.  This event is available only on PMC0."},
00104     {"ILD_STALL", "The number of cycles the instruction length decoder stalled due to a length changing prefix."},
00105     {"INST_QUEUE.FULL", "The number of cycles during which the instruction queue is full."},
00106     {"INST_RETIRED.ANY_P", "The number of instructions retired.  This is an architectural performance event."},
00107     {"INST_RETIRED.LOADS", "The number of instructions retired that contained a load operation."},
00108     {"INST_RETIRED.OTHER", "The number of instructions retired that did not contain a load or a store operation."},
00109     {"INST_RETIRED.STORES", "The number of instructions retired that contained a store operation."},
00110     {"INST_RETIRED.VM_H", "The number of instructions retired while in VMX root operation."},
00111     {"ITLB.FLUSH", "The number of ITLB flushes."},
00112     {"ITLB.LARGE_MISS", "The number of instruction fetches from large pages that miss the ITLB."},
00113     {"ITLB.MISSES", "The number of instruction fetches from both large and small pages that miss the ITLB."},
00114     {"ITLB.SMALL_MISS", "The number of instruction fetches from small pages that miss the ITLB."},
00115     {"ITLB_MISS_RETIRED", "The number of retired instructions that missed the ITLB when they were fetched."},
00116     {"L1D_ALL_CACHE_REF", "The number of data reads and writes to cacheable memory."},
00117     {"L1D_ALL_REF", "The number of references to L1 data cache counting loads and stores of to all memory types."},
00118     {"L1D_CACHE_LD", "Number of data reads from cacheable memory excluding locked reads."},
00119     {"L1D_CACHE_LOCK", "Number of locked reads from cacheable memory."},
00120     {"L1D_CACHE_LOCK_DURATION", "The number of cycles during which any cache line is locked by any locking instruction."},
00121     {"L1D_CACHE_ST", "The number of data writes to cacheable memory excluding locked writes."},
00122     {"L1D_M_EVICT", "The number of modified cache lines evicted from L1 data cache."},
00123     {"L1D_M_REPL", "The number of modified lines allocated in L1 data cache."},
00124     {"L1D_PEND_MISS", "The total number of outstanding L1 data cache misses at any clock."},
00125     {"L1D_PREFETCH.REQUESTS", "The number of times L1 data cache requested to prefetch a data cache line."},
00126     {"L1D_REPL", "The number of lines brought into L1 data cache."},
00127     {"L1D_SPLIT.LOADS", "The number of load operations that span two cache lines."},
00128     {"L1D_SPLIT.STORES", "The number of store operations that span two cache lines."},
00129     {"L1I_MISSES", "The number of instruction fetch unit misses."},
00130     {"L1I_READS", "The number of instruction fetches."},
00131     {"L2_ADS", "The number of cycles that the L2 address bus is in use."},
00132     {"L2_DBUS_BUSY_RD", "The number of cycles during which the L2 data bus is busy transferring data to the core."},
00133     {"L2_IFETCH", "The number of instruction cache line requests from the instruction fetch unit."},
00134     {"L2_LD", "The number of L2 cache read requests from L1 cache and L2 prefetchers."},
00135     {"L2_LINES_IN", "The number of cache lines allocated in L2 cache."},
00136     {"L2_LINES_OUT", "The number of L2 cache lines evicted."},
00137     {"L2_LOCK", "The number of locked accesses to cache lines that miss L1 data cache."},
00138     {"L2_M_LINES_IN", "The number of L2 cache line modifications."},
00139     {"L2_M_LINES_OUT", "The number of modified lines evicted from L2 cache."},
00140     {"L2_NO_REQ", "Number of cycles during which no L2 cache requests were pending from a core."},
00141     {"L2_REJECT_BUSQ", "Number of L2 cache requests that were rejected."},
00142     {"L2_RQSTS", "The number of completed L2 cache requests."},
00143     {"L2_RQSTS.SELF.DEMAND.I_STATE", "The number of completed L2 cache demand requests from this core that missed the L2 cache.  This is an architectural performance event."},
00144     {"L2_RQSTS.SELF.DEMAND.MESI", "The number of completed L2 cache demand requests from this core.  This is an architectural performance event."},
00145     {"L2_ST", "The number of store operations that miss the L1 cache and request data from the L2 cache."},
00146     {"LOAD_BLOCK.L1D", "The number of loads blocked by the L1 data cache."},
00147     {"LOAD_BLOCK.OVERLAP_STORE", "The number of loads that partially overlap an earlier store or are aliased with a previous store."},
00148     {"LOAD_BLOCK.STA", "The number of loads blocked by preceding stores whose address is yet to be calculated."},
00149     {"LOAD_BLOCK.STD", "The number of loads blocked by preceding stores to the same address whose data value is not known."},
00150     {"LOAD_BLOCK.UNTIL_RETIRE", "The numer of load operations that were blocked until retirement."},
00151     {"LOAD_HIT_PRE", "The number of load operations that conflicted with an prefetch to the same cache line."},
00152     {"MACHINE_NUKES.MEM_ORDER", "The number of times the execution pipeline was restarted due to a memory ordering conflict or memory disambiguation misprediction."},
00153     {"MACHINE_NUKES.SMC", "The number of times a program writes to a code section."},
00154     {"MACRO_INSTS.CISC_DECODED", "The number of complex instructions decoded."},
00155     {"MACRO_INSTS.DECODED", "The number of instructions decoded."},
00156     {"MEMORY_DISAMBIGUATION.RESET", "The number of cycles during which memory disambiguation misprediction occurs."},
00157     {"MEMORY_DISAMBIGUATION.SUCCESS", "The number of load operations that were successfully disambiguated."},
00158     {"MEM_LOAD_RETIRED.DTLB_MISS", "The number of retired loads that missed the DTLB."},
00159     {"MEM_LOAD_RETIRED.L1D_LINE_MISS", "The number of retired load operations that missed L1 data cache and that sent a request to L2 cache. This event is only available on PMC0."},
00160     {"MEM_LOAD_RETIRED.L1D_MISS", "The number of retired load operations that missed L1 data cache.  This event is only available on PMC0."},
00161     {"MEM_LOAD_RETIRED.L2_LINE_MISS", "The number of load operations that missed L2 cache and that caused a bus request."},
00162     {"MEM_LOAD_RETIRED.L2_MISS", "The number of load operations that missed L2 cache."},
00163     {"MUL","The number of multiply operations executed (only available on PMC1.)"},
00164     {"PAGE_WALKS.COUNT", "The number of page walks executed due to an ITLB or DTLB miss."},
00165     {"PAGE_WALKS.CYCLES", "The number of cycles spent in a page walk caused by an ITLB or DTLB miss."},
00166     {"PREF_RQSTS_DN", "The number of downward prefetches issued from the Data Prefetch Logic unit to L2 cache."},
00167     {"PREF_RQSTS_UP", "The number of upward prefetches issued from the Data Prefetch Logic unit to L2 cache."},
00168     {"RAT_STALLS.ANY", "The number of stall cycles due to any of RAT_STALLS.FLAGS RAT_STALLS.FPSW, RAT_STALLS.PARTIAL and RAT_STALLS.ROB_READ_PORT."},
00169     {"RAT_STALLS.FLAGS", "The number of cycles execution stalled due to a flag register induced stall."},
00170     {"RAT_STALLS.FPSW", "The number of times the floating point status word was written."},
00171     {"RAT_STALLS.OTHER_SERIALIZATION_STALLS", "The number of stalls due to other RAT resource serialization not counted by umask 0FH."},
00172     {"RAT_STALLS.PARTIAL_CYCLES", "The number of cycles of added instruction execution latency due to the use of a register that was partially written by previous instructions."},
00173     {"RAT_STALLS.ROB_READ_PORT", "The number of cycles when ROB read port stalls occurred."},
00174     {"RESOURCE_STALLS.ANY", "The number of cycles during which any resource related stall occurred."},
00175     {"RESOURCE_STALLS.BR_MISS_CLEAR", "The number of cycles stalled due to branch misprediction."},
00176     {"RESOURCE_STALLS.FPCW", "The number of cycles stalled due to writing the floating point control word."},
00177     {"RESOURCE_STALLS.LD_ST", "The number of cycles during which the number of loads and stores in the pipeline exceeded their limits."},
00178     {"RESOURCE_STALLS.ROB_FULL", "The number of cycles when the reorder buffer was full."},
00179     {"RESOURCE_STALLS.RS_FULL", "The number of cycles during which the RS was full."},
00180     {"RS_UOPS_DISPATCHED", "The number of micro-ops dispatched for execution."},
00181     {"RS_UOPS_DISPATCHED.PORT0", "The number of cycles micro-ops were dispatched for execution on port 0."},
00182     {"RS_UOPS_DISPATCHED.PORT1", "The number of cycles micro-ops were dispatched for execution on port 1."},
00183     {"RS_UOPS_DISPATCHED.PORT2", "The number of cycles micro-ops were dispatched for execution on port 2."},
00184     {"RS_UOPS_DISPATCHED.PORT3", "The number of cycles micro-ops were dispatched for execution on port 3."},
00185     {"RS_UOPS_DISPATCHED.PORT4", "The number of cycles micro-ops were dispatched for execution on port 4."},
00186     {"RS_UOPS_DISPATCHED.PORT5", "The number of cycles micro-ops were dispatched for execution on port 5."},
00187     {"SB_DRAIN_CYCLES", "The number of cycles while the store buffer is draining."},
00188     {"SEGMENT_REG_LOADS", "The number of segment register loads."},
00189     {"SEG_REG_RENAMES.ANY", "The number of times the any segment register was renamed."},
00190     {"SEG_REG_RENAMES.DS", "The number of times the ds register is renamed."},
00191     {"SEG_REG_RENAMES.ES", "The number of times the es register is renamed."},
00192     {"SEG_REG_RENAMES.FS", "The number of times the fs register is renamed."},
00193     {"SEG_REG_RENAMES.GS", "The number of times the gs register is renamed."},
00194     {"SEG_RENAME_STALLS.ANY", "The number of stalls due to lack of resource to rename any segment register."},
00195     {"SEG_RENAME_STALLS.DS", "The number of stalls due to lack of renaming resources for the ds register."},
00196     {"SEG_RENAME_STALLS.ES", "The number of stalls due to lack of renaming resources for the es register."},
00197     {"SEG_RENAME_STALLS.FS", "The number of stalls due to lack of renaming resources for the fs register."},
00198     {"SEG_RENAME_STALLS.GS", "The number of stalls due to lack of renaming resources for the gs register."},
00199     {"SIMD_ASSIST", "The number SIMD assists invoked."},
00200     {"SIMD_COMP_INST_RETIRED.PACKED_DOUBLE", "Then number of computational SSE2 packed double precision instructions retired."},
00201     {"SIMD_COMP_INST_RETIRED.PACKED_SINGLE", "Then number of computational SSE2 packed single precision instructions retired."},
00202     {"SIMD_COMP_INST_RETIRED.SCALAR_DOUBLE", "Then number of computational SSE2 scalar double precision instructions retired."},
00203     {"SIMD_COMP_INST_RETIRED.SCALAR_SINGLE", "Then number of computational SSE2 scalar single precision instructions retired."},
00204     {"SIMD_INSTR_RETIRED", "The number of retired SIMD instructions that use MMX registers."},
00205     {"SIMD_INST_RETIRED.ANY", "The number of streaming SIMD instructions retired."},
00206     {"SIMD_INST_RETIRED.PACKED_DOUBLE", "The number of SSE2 packed double precision instructions retired."},
00207     {"SIMD_INST_RETIRED.PACKED_SINGLE", "The number of SSE packed single precision instructions retired."},
00208     {"SIMD_INST_RETIRED.SCALAR_DOUBLE", "The number of SSE2 scalar double precision instructions retired."},
00209     {"SIMD_INST_RETIRED.SCALAR_SINGLE", "The number of SSE scalar single precision instructions retired."},
00210     {"SIMD_INST_RETIRED.VECTOR", "The number of SSE2 vector instructions retired."},
00211     {"SIMD_SAT_INSTR_RETIRED", "The number of saturated arithmetic SIMD instructions retired."},
00212     {"SIMD_SAT_UOP_EXEC", "The number of SIMD saturated arithmetic micro-ops executed."},
00213     {"SIMD_UOPS_EXEC", "The number of SIMD micro-ops executed."},
00214     {"SIMD_UOP_TYPE_EXEC.ARITHMETIC", "The number of SIMD packed arithmetic micro-ops executed."},
00215     {"SIMD_UOP_TYPE_EXEC.LOGICAL", "The number of SIMD packed logical micro-ops executed."},
00216     {"SIMD_UOP_TYPE_EXEC.MUL", "The number of SIMD packed multiply micro-ops executed."},
00217     {"SIMD_UOP_TYPE_EXEC.PACK", "The number of SIMD pack micro-ops executed."},
00218     {"SIMD_UOP_TYPE_EXEC.SHIFT", "The number of SIMD packed shift micro-ops executed."},
00219     {"SIMD_UOP_TYPE_EXEC.UNPACK", "The number of SIMD unpack micro-ops executed."},
00220     {"SNOOP_STALL_DRV", "The number of times the bus stalled for snoops."},
00221     {"SSE_PRE_EXEC.L1", "The number of PREFETCHT0 instructions executed."},
00222     {"SSE_PRE_EXEC.L2", "The number of PREFETCHT1 instructions executed."},
00223     {"SSE_PRE_EXEC.NTA", "The number of PREFETCHNTA instructions executed."},
00224     {"SSE_PRE_EXEC.STORES", "The number of times SSE non-temporal store instructions were executed."},
00225     {"SSE_PRE_MISS.L1", "The number of times the PREFETCHT0 instruction executed and missed all cache levels."},
00226     {"SSE_PRE_MISS.L2", "The number of times the PREFETCHT1 instruction executed and missed all cache levels."},
00227     {"SSE_PRE_MISS.NTA", "The number of times the PREFETCHNTA instruction executed and missed all cache levels."},
00228     {"STORE_BLOCK.ORDER", "The number of cycles while a store was waiting for another store to be globally observed."},
00229     {"STORE_BLOCK.SNOOP", "The number of cycles while a store was blocked due to a conflict with an internal or external snoop."},
00230     {"THERMAL_TRIP", "The number of thermal trips."},
00231     {"UOPS_RETIRED.ANY", "The number of micro-ops retired."},
00232     {"UOPS_RETIRED.FUSED", "The number of fused micro-ops retired."},
00233     {"UOPS_RETIRED.LD_IND_BR", "The number of micro-ops retired that fused a load with another operation."},
00234     {"UOPS_RETIRED.MACRO_FUSION", "The number of times retired instruction pairs were fused into one micro-op."},
00235     {"UOPS_RETIRED.NON_FUSED", "he number of non-fused micro-ops retired."},
00236     {"UOPS_RETIRED.STD_STA", "The number of store address calculations that fused into one micro-op."},
00237     {"X87_OPS_RETIRED.ANY", "The number of floating point computational instructions retired."},
00238     {"X87_OPS_RETIRED.FXCH", "The number of FXCH instructions retired."},
00239     { NULL, NULL } 
00240 };
00241 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines