1.\" Copyright (c) 2010 Fabien Thomas. All rights reserved. 2.\" 3.\" Redistribution and use in source and binary forms, with or without 4.\" modification, are permitted provided that the following conditions 5.\" are met: 6.\" 1. Redistributions of source code must retain the above copyright 7.\" notice, this list of conditions and the following disclaimer. 8.\" 2. Redistributions in binary form must reproduce the above copyright 9.\" notice, this list of conditions and the following disclaimer in the 10.\" documentation and/or other materials provided with the distribution. 11.\" 12.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 13.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 15.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 16.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 18.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 19.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 20.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 21.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 22.\" SUCH DAMAGE. 23.\" 24.\" $FreeBSD$ 25.\" 26.Dd February 25, 2012 27.Dt PMC.WESTMERE 3 28.Os 29.Sh NAME 30.Nm pmc.westmere 31.Nd measurement events for 32.Tn Intel 33.Tn Westmere 34family CPUs 35.Sh LIBRARY 36.Lb libpmc 37.Sh SYNOPSIS 38.In pmc.h 39.Sh DESCRIPTION 40.Tn Intel 41.Tn "Westmere" 42CPUs contain PMCs conforming to version 2 of the 43.Tn Intel 44performance measurement architecture. 45These CPUs may contain up to three classes of PMCs: 46.Bl -tag -width "Li PMC_CLASS_IAP" 47.It Li PMC_CLASS_IAF 48Fixed-function counters that count only one hardware event per counter. 49.It Li PMC_CLASS_IAP 50Programmable counters that may be configured to count one of a defined 51set of hardware events. 52.El 53.Pp 54The number of PMCs available in each class and their widths need to be 55determined at run time by calling 56.Xr pmc_cpuinfo 3 . 57.Pp 58Intel Westmere PMCs are documented in 59.Rs 60.%B "Intel(R) 64 and IA-32 Architectures Software Developes Manual" 61.%T "Volume 3B: System Programming Guide, Part 2" 62.%N "Order Number: 253669-033US" 63.%D December 2009 64.%Q "Intel Corporation" 65.Re 66.Ss WESTMERE FIXED FUNCTION PMCS 67These PMCs and their supported events are documented in 68.Xr pmc.iaf 3 . 69.Ss WESTMERE PROGRAMMABLE PMCS 70The programmable PMCs support the following capabilities: 71.Bl -column "PMC_CAP_INTERRUPT" "Support" 72.It Em Capability Ta Em Support 73.It PMC_CAP_CASCADE Ta \&No 74.It PMC_CAP_EDGE Ta Yes 75.It PMC_CAP_INTERRUPT Ta Yes 76.It PMC_CAP_INVERT Ta Yes 77.It PMC_CAP_READ Ta Yes 78.It PMC_CAP_PRECISE Ta \&No 79.It PMC_CAP_SYSTEM Ta Yes 80.It PMC_CAP_TAGGING Ta \&No 81.It PMC_CAP_THRESHOLD Ta Yes 82.It PMC_CAP_USER Ta Yes 83.It PMC_CAP_WRITE Ta Yes 84.El 85.Ss Event Qualifiers 86Event specifiers for these PMCs support the following common 87qualifiers: 88.Bl -tag -width indent 89.It Li rsp= Ns Ar value 90Configure the Off-core Response bits. 91.Bl -tag -width indent 92.It Li DMND_DATA_RD 93Counts the number of demand and DCU prefetch data reads of full 94and partial cachelines as well as demand data page table entry 95cacheline reads. 96Does not count L2 data read prefetches or 97instruction fetches. 98.It Li DMND_RFO 99Counts the number of demand and DCU prefetch reads for ownership 100(RFO) requests generated by a write to data cacheline. 101Does not count L2 RFO. 102.It Li DMND_IFETCH 103Counts the number of demand and DCU prefetch instruction cacheline 104reads. 105Does not count L2 code read prefetches. 106WB 107Counts the number of writeback (modified to exclusive) transactions. 108.It Li PF_DATA_RD 109Counts the number of data cacheline reads generated by L2 prefetchers. 110.It Li PF_RFO 111Counts the number of RFO requests generated by L2 prefetchers. 112.It Li PF_IFETCH 113Counts the number of code reads generated by L2 prefetchers. 114.It Li OTHER 115Counts one of the following transaction types, including L3 invalidate, 116I/O, full or partial writes, WC or non-temporal stores, CLFLUSH, Fences, 117lock, unlock, split lock. 118.It Li UNCORE_HIT 119L3 Hit: local or remote home requests that hit L3 cache in the uncore 120with no coherency actions required (snooping). 121.It Li OTHER_CORE_HIT_SNP 122L3 Hit: local or remote home requests that hit L3 cache in the uncore 123and was serviced by another core with a cross core snoop where no modified 124copies were found (clean). 125.It Li OTHER_CORE_HITM 126L3 Hit: local or remote home requests that hit L3 cache in the uncore 127and was serviced by another core with a cross core snoop where modified 128copies were found (HITM). 129.It Li REMOTE_CACHE_FWD 130L3 Miss: local homed requests that missed the L3 cache and was serviced 131by forwarded data following a cross package snoop where no modified 132copies found. (Remote home requests are not counted) 133.It Li REMOTE_DRAM 134L3 Miss: remote home requests that missed the L3 cache and were serviced 135by remote DRAM. 136.It Li LOCAL_DRAM 137L3 Miss: local home requests that missed the L3 cache and were serviced 138by local DRAM. 139.It Li NON_DRAM 140Non-DRAM requests that were serviced by IOH. 141.El 142.It Li cmask= Ns Ar value 143Configure the PMC to increment only if the number of configured 144events measured in a cycle is greater than or equal to 145.Ar value . 146.It Li edge 147Configure the PMC to count the number of de-asserted to asserted 148transitions of the conditions expressed by the other qualifiers. 149If specified, the counter will increment only once whenever a 150condition becomes true, irrespective of the number of clocks during 151which the condition remains true. 152.It Li inv 153Invert the sense of comparison when the 154.Dq Li cmask 155qualifier is present, making the counter increment when the number of 156events per cycle is less than the value specified by the 157.Dq Li cmask 158qualifier. 159.It Li os 160Configure the PMC to count events happening at processor privilege 161level 0. 162.It Li usr 163Configure the PMC to count events occurring at privilege levels 1, 2 164or 3. 165.El 166.Pp 167If neither of the 168.Dq Li os 169or 170.Dq Li usr 171qualifiers are specified, the default is to enable both. 172.Ss Event Specifiers (Programmable PMCs) 173Westmere programmable PMCs support the following events: 174.Bl -tag -width indent 175.It Li LOAD_BLOCK.OVERLAP_STORE 176.Pq Event 03H , Umask 02H 177Loads that partially overlap an earlier store 178.It Li SB_DRAIN.ANY 179.Pq Event 04H , Umask 07H 180All Store buffer stall cycles 181.It Li MISALIGN_MEMORY.STORE 182.Pq Event 05H , Umask 02H 183All store referenced with misaligned address 184.It Li STORE_BLOCKS.AT_RET 185.Pq Event 06H , Umask 04H 186Counts number of loads delayed with at-Retirement block code. 187The following 188loads need to be executed at retirement and wait for all senior stores on 189the same thread to be drained: load splitting across 4K boundary (page 190split), load accessing uncacheable (UC or USWC) memory, load lock, and load 191with page table in UC or USWC memory region. 192.It Li STORE_BLOCKS.L1D_BLOCK 193.Pq Event 06H , Umask 08H 194Cacheable loads delayed with L1D block code 195.It Li PARTIAL_ADDRESS_ALIAS 196.Pq Event 07H , Umask 01H 197Counts false dependency due to partial address aliasing 198.It Li DTLB_LOAD_MISSES.ANY 199.Pq Event 08H , Umask 01H 200Counts all load misses that cause a page walk 201.It Li DTLB_LOAD_MISSES.WALK_COMPLETED 202.Pq Event 08H , Umask 02H 203Counts number of completed page walks due to load miss in the STLB. 204.It Li DTLB_LOAD_MISSES.WALK_CYCLES 205.Pq Event 08H , Umask 04H 206Cycles PMH is busy with a page walk due to a load miss in the STLB. 207.It Li DTLB_LOAD_MISSES.STLB_HIT 208.Pq Event 08H , Umask 10H 209Number of cache load STLB hits 210.It Li DTLB_LOAD_MISSES.PDE_MISS 211.Pq Event 08H , Umask 20H 212Number of DTLB cache load misses where the low part of the linear to 213physical address translation was missed. 214.It Li MEM_INST_RETIRED.LOADS 215.Pq Event 0BH , Umask 01H 216Counts the number of instructions with an architecturally-visible store 217retired on the architected path. 218In conjunction with ld_lat facility 219.It Li MEM_INST_RETIRED.STORES 220.Pq Event 0BH , Umask 02H 221Counts the number of instructions with an architecturally-visible store 222retired on the architected path. 223In conjunction with ld_lat facility 224.It Li MEM_INST_RETIRED.LATENCY_ABOVE_THRESHOLD 225.Pq Event 0BH , Umask 10H 226Counts the number of instructions exceeding the latency specified with 227ld_lat facility. 228In conjunction with ld_lat facility 229.It Li MEM_STORE_RETIRED.DTLB_MISS 230.Pq Event 0CH , Umask 01H 231The event counts the number of retired stores that missed the DTLB. 232The DTLB miss is not counted if the store operation causes a fault. 233Does not counter prefetches. 234Counts both primary and secondary misses to the TLB 235.It Li UOPS_ISSUED.ANY 236.Pq Event 0EH , Umask 01H 237Counts the number of Uops issued by the Register Allocation Table to the 238Reservation Station, i.e. the UOPs issued from the front end to the back 239end. 240.It Li UOPS_ISSUED.STALLED_CYCLES 241.Pq Event 0EH , Umask 01H 242Counts the number of cycles no Uops issued by the Register Allocation Table 243to the Reservation Station, i.e. the UOPs issued from the front end to the 244back end. 245set invert=1, cmask = 1 246.It Li UOPS_ISSUED.FUSED 247.Pq Event 0EH , Umask 02H 248Counts the number of fused Uops that were issued from the Register 249Allocation Table to the Reservation Station. 250.It Li MEM_UNCORE_RETIRED.LOCAL_HITM 251.Pq Event 0FH , Umask 02H 252Load instructions retired that HIT modified data in sibling core (Precise 253Event) 254.It Li MEM_UNCORE_RETIRED.LOCAL_DRAM_AND_REMOTE_CACHE_HIT 255.Pq Event 0FH , Umask 08H 256Load instructions retired local dram and remote cache HIT data sources 257(Precise Event) 258.It Li MEM_UNCORE_RETIRED.LOCAL_DRAM 259.Pq Event 0FH , Umask 10H 260Load instructions retired with a data source of local DRAM or locally homed 261remote cache HITM (Precise Event) 262.It Li MEM_UNCORE_RETIRED.REMOTE_DRAM 263.Pq Event 0FH , Umask 20H 264Load instructions retired remote DRAM and remote home-remote cache HITM 265(Precise Event) 266.It Li MEM_UNCORE_RETIRED.UNCACHEABLE 267.Pq Event 0FH , Umask 80H 268Load instructions retired I/O (Precise Event) 269.It Li FP_COMP_OPS_EXE.X87 270.Pq Event 10H , Umask 01H 271Counts the number of FP Computational Uops Executed. 272The number of FADD, 273FSUB, FCOM, FMULs, integer MULsand IMULs, FDIVs, FPREMs, FSQRTS, integer 274DIVs, and IDIVs. 275This event does not distinguish an FADD used in the middle 276of a transcendental flow from a separate FADD instruction. 277.It Li FP_COMP_OPS_EXE.MMX 278.Pq Event 10H , Umask 02H 279Counts number of MMX Uops executed. 280.It Li FP_COMP_OPS_EXE.SSE_FP 281.Pq Event 10H , Umask 04H 282Counts number of SSE and SSE2 FP uops executed. 283.It Li FP_COMP_OPS_EXE.SSE2_INTEGER 284.Pq Event 10H , Umask 08H 285Counts number of SSE2 integer uops executed. 286.It Li FP_COMP_OPS_EXE.SSE_FP_PACKED 287.Pq Event 10H , Umask 10H 288Counts number of SSE FP packed uops executed. 289.It Li FP_COMP_OPS_EXE.SSE_FP_SCALAR 290.Pq Event 10H , Umask 20H 291Counts number of SSE FP scalar uops executed. 292.It Li FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION 293.Pq Event 10H , Umask 40H 294Counts number of SSE* FP single precision uops executed. 295.It Li FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION 296.Pq Event 10H , Umask 80H 297Counts number of SSE* FP double precision uops executed. 298.It Li SIMD_INT_128.PACKED_MPY 299.Pq Event 12H , Umask 01H 300Counts number of 128 bit SIMD integer multiply operations. 301.It Li SIMD_INT_128.PACKED_SHIFT 302.Pq Event 12H , Umask 02H 303Counts number of 128 bit SIMD integer shift operations. 304.It Li SIMD_INT_128.PACK 305.Pq Event 12H , Umask 04H 306Counts number of 128 bit SIMD integer pack operations. 307.It Li SIMD_INT_128.UNPACK 308.Pq Event 12H , Umask 08H 309Counts number of 128 bit SIMD integer unpack operations. 310.It Li SIMD_INT_128.PACKED_LOGICAL 311.Pq Event 12H , Umask 10H 312Counts number of 128 bit SIMD integer logical operations. 313.It Li SIMD_INT_128.PACKED_ARITH 314.Pq Event 12H , Umask 20H 315Counts number of 128 bit SIMD integer arithmetic operations. 316.It Li SIMD_INT_128.SHUFFLE_MOVE 317.Pq Event 12H , Umask 40H 318Counts number of 128 bit SIMD integer shuffle and move operations. 319.It Li LOAD_DISPATCH.RS 320.Pq Event 13H , Umask 01H 321Counts number of loads dispatched from the Reservation Station that bypass 322the Memory Order Buffer. 323.It Li LOAD_DISPATCH.RS_DELAYED 324.Pq Event 13H , Umask 02H 325Counts the number of delayed RS dispatches at the stage latch. 326If an RS dispatch can not bypass to LB, it has another chance to dispatch 327from the one-cycle delayed staging latch before it is written into the LB. 328.It Li LOAD_DISPATCH.MOB 329.Pq Event 13H , Umask 04H 330Counts the number of loads dispatched from the Reservation Station to the 331Memory Order Buffer. 332.It Li LOAD_DISPATCH.ANY 333.Pq Event 13H , Umask 07H 334Counts all loads dispatched from the Reservation Station. 335.It Li ARITH.CYCLES_DIV_BUSY 336.Pq Event 14H , Umask 01H 337Counts the number of cycles the divider is busy executing divide or square 338root operations. 339The divide can be integer, X87 or Streaming SIMD Extensions (SSE). 340The square root operation can be either X87 or SSE. 341Set 'edge =1, invert=1, cmask=1' to count the number of divides. 342Count may be incorrect When SMT is on 343.It Li ARITH.MUL 344.Pq Event 14H , Umask 02H 345Counts the number of multiply operations executed. 346This includes integer as 347well as floating point multiply operations but excludes DPPS mul and MPSAD. 348Count may be incorrect When SMT is on 349.It Li INST_QUEUE_WRITES 350.Pq Event 17H , Umask 01H 351Counts the number of instructions written into the instruction queue every 352cycle. 353.It Li INST_DECODED.DEC0 354.Pq Event 18H , Umask 01H 355Counts number of instructions that require decoder 0 to be decoded. 356Usually, this means that the instruction maps to more than 1 uop 357.It Li TWO_UOP_INSTS_DECODED 358.Pq Event 19H , Umask 01H 359An instruction that generates two uops was decoded 360.It Li INST_QUEUE_WRITE_CYCLES 361.Pq Event 1EH , Umask 01H 362This event counts the number of cycles during which instructions are written 363to the instruction queue. 364Dividing this counter by the number of 365instructions written to the instruction queue (INST_QUEUE_WRITES) yields the 366average number of instructions decoded each cycle. 367If this number is less 368than four and the pipe stalls, this indicates that the decoder is failing to 369decode enough instructions per cycle to sustain the 4-wide pipeline. 370If SSE* instructions that are 6 bytes or longer arrive one after another, 371then front end throughput may limit execution speed. 372In such case, 373.It Li LSD_OVERFLOW 374.Pq Event 20H , Umask 01H 375Number of loops that can not stream from the instruction queue. 376.It Li L2_RQSTS.LD_HIT 377.Pq Event 24H , Umask 01H 378Counts number of loads that hit the L2 cache. 379L2 loads include both L1D demand misses as well as L1D prefetches. 380L2 loads can be rejected for various reasons. 381Only non rejected loads are counted. 382.It Li L2_RQSTS.LD_MISS 383.Pq Event 24H , Umask 02H 384Counts the number of loads that miss the L2 cache. 385L2 loads include both L1D demand misses as well as L1D prefetches. 386.It Li L2_RQSTS.LOADS 387.Pq Event 24H , Umask 03H 388Counts all L2 load requests. 389L2 loads include both L1D demand misses as well as L1D prefetches. 390.It Li L2_RQSTS.RFO_HIT 391.Pq Event 24H , Umask 04H 392Counts the number of store RFO requests that hit the L2 cache. 393L2 RFO requests include both L1D demand RFO misses as well as L1D RFO 394prefetches. 395Count includes WC memory requests, where the data is not fetched but the 396permission to write the line is required. 397.It Li L2_RQSTS.RFO_MISS 398.Pq Event 24H , Umask 08H 399Counts the number of store RFO requests that miss the L2 cache. 400L2 RFO requests include both L1D demand RFO misses as well as L1D RFO 401prefetches. 402.It Li L2_RQSTS.RFOS 403.Pq Event 24H , Umask 0CH 404Counts all L2 store RFO requests. 405L2 RFO requests include both L1D demand 406RFO misses as well as L1D RFO prefetches. 407.It Li L2_RQSTS.IFETCH_HIT 408.Pq Event 24H , Umask 10H 409Counts number of instruction fetches that hit the L2 cache. 410L2 instruction fetches include both L1I demand misses as well as L1I 411instruction prefetches. 412.It Li L2_RQSTS.IFETCH_MISS 413.Pq Event 24H , Umask 20H 414Counts number of instruction fetches that miss the L2 cache. 415L2 instruction fetches include both L1I demand misses as well as L1I 416instruction prefetches. 417.It Li L2_RQSTS.IFETCHES 418.Pq Event 24H , Umask 30H 419Counts all instruction fetches. 420L2 instruction fetches include both L1I 421demand misses as well as L1I instruction prefetches. 422.It Li L2_RQSTS.PREFETCH_HIT 423.Pq Event 24H , Umask 40H 424Counts L2 prefetch hits for both code and data. 425.It Li L2_RQSTS.PREFETCH_MISS 426.Pq Event 24H , Umask 80H 427Counts L2 prefetch misses for both code and data. 428.It Li L2_RQSTS.PREFETCHES 429.Pq Event 24H , Umask C0H 430Counts all L2 prefetches for both code and data. 431.It Li L2_RQSTS.MISS 432.Pq Event 24H , Umask AAH 433Counts all L2 misses for both code and data. 434.It Li L2_RQSTS.REFERENCES 435.Pq Event 24H , Umask FFH 436Counts all L2 requests for both code and data. 437.It Li L2_DATA_RQSTS.DEMAND.I_STATE 438.Pq Event 26H , Umask 01H 439Counts number of L2 data demand loads where the cache line to be loaded is 440in the I (invalid) state, i.e. a cache miss. 441L2 demand loads are both L1D demand misses and L1D prefetches. 442.It Li L2_DATA_RQSTS.DEMAND.S_STATE 443.Pq Event 26H , Umask 02H 444Counts number of L2 data demand loads where the cache line to be loaded is 445in the S (shared) state. 446L2 demand loads are both L1D demand misses and L1D 447prefetches. 448.It Li L2_DATA_RQSTS.DEMAND.E_STATE 449.Pq Event 26H , Umask 04H 450Counts number of L2 data demand loads where the cache line to be loaded is 451in the E (exclusive) state. 452L2 demand loads are both L1D demand misses and 453L1D prefetches. 454.It Li L2_DATA_RQSTS.DEMAND.M_STATE 455.Pq Event 26H , Umask 08H 456Counts number of L2 data demand loads where the cache line to be loaded is 457in the M (modified) state. 458L2 demand loads are both L1D demand misses and 459L1D prefetches. 460.It Li L2_DATA_RQSTS.DEMAND.MESI 461.Pq Event 26H , Umask 0FH 462Counts all L2 data demand requests. 463L2 demand loads are both L1D demand 464misses and L1D prefetches. 465.It Li L2_DATA_RQSTS.PREFETCH.I_STATE 466.Pq Event 26H , Umask 10H 467Counts number of L2 prefetch data loads where the cache line to be loaded is 468in the I (invalid) state, i.e. a cache miss. 469.It Li L2_DATA_RQSTS.PREFETCH.S_STATE 470.Pq Event 26H , Umask 20H 471Counts number of L2 prefetch data loads where the cache line to be loaded is 472in the S (shared) state. 473A prefetch RFO will miss on an S state line, while 474a prefetch read will hit on an S state line. 475.It Li L2_DATA_RQSTS.PREFETCH.E_STATE 476.Pq Event 26H , Umask 40H 477Counts number of L2 prefetch data loads where the cache line to be loaded is 478in the E (exclusive) state. 479.It Li L2_DATA_RQSTS.PREFETCH.M_STATE 480.Pq Event 26H , Umask 80H 481Counts number of L2 prefetch data loads where the cache line to be loaded is 482in the M (modified) state. 483.It Li L2_DATA_RQSTS.PREFETCH.MESI 484.Pq Event 26H , Umask F0H 485Counts all L2 prefetch requests. 486.It Li L2_DATA_RQSTS.ANY 487.Pq Event 26H , Umask FFH 488Counts all L2 data requests. 489.It Li L2_WRITE.RFO.I_STATE 490.Pq Event 27H , Umask 01H 491Counts number of L2 demand store RFO requests where the cache line to be 492loaded is in the I (invalid) state, i.e, a cache miss. 493The L1D prefetcher 494does not issue a RFO prefetch. 495This is a demand RFO request 496.It Li L2_WRITE.RFO.S_STATE 497.Pq Event 27H , Umask 02H 498Counts number of L2 store RFO requests where the cache line to be loaded is 499in the S (shared) state. 500The L1D prefetcher does not issue a RFO prefetch. 501This is a demand RFO request. 502.It Li L2_WRITE.RFO.M_STATE 503.Pq Event 27H , Umask 08H 504Counts number of L2 store RFO requests where the cache line to be loaded is 505in the M (modified) state. 506The L1D prefetcher does not issue a RFO prefetch. 507This is a demand RFO request. 508.It Li L2_WRITE.RFO.HIT 509.Pq Event 27H , Umask 0EH 510Counts number of L2 store RFO requests where the cache line to be loaded is 511in either the S, E or M states. 512The L1D prefetcher does not issue a RFO 513prefetch. 514This is a demand RFO request 515.It Li L2_WRITE.RFO.MESI 516.Pq Event 27H , Umask 0FH 517Counts all L2 store RFO requests.The L1D prefetcher does not issue a RFO 518prefetch. 519This is a demand RFO request. 520.It Li L2_WRITE.LOCK.I_STATE 521.Pq Event 27H , Umask 10H 522Counts number of L2 demand lock RFO requests where the cache line to be 523loaded is in the I (invalid) state, i.e. a cache miss. 524.It Li L2_WRITE.LOCK.S_STATE 525.Pq Event 27H , Umask 20H 526Counts number of L2 lock RFO requests where the cache line to be loaded is 527in the S (shared) state. 528.It Li L2_WRITE.LOCK.E_STATE 529.Pq Event 27H , Umask 40H 530Counts number of L2 demand lock RFO requests where the cache line to be 531loaded is in the E (exclusive) state. 532.It Li L2_WRITE.LOCK.M_STATE 533.Pq Event 27H , Umask 80H 534Counts number of L2 demand lock RFO requests where the cache line to be 535loaded is in the M (modified) state. 536.It Li L2_WRITE.LOCK.HIT 537.Pq Event 27H , Umask E0H 538Counts number of L2 demand lock RFO requests where the cache line to be 539loaded is in either the S, E, or M state. 540.It Li L2_WRITE.LOCK.MESI 541.Pq Event 27H , Umask F0H 542Counts all L2 demand lock RFO requests. 543.It Li L1D_WB_L2.I_STATE 544.Pq Event 28H , Umask 01H 545Counts number of L1 writebacks to the L2 where the cache line to be written 546is in the I (invalid) state, i.e. a cache miss. 547.It Li L1D_WB_L2.S_STATE 548.Pq Event 28H , Umask 02H 549Counts number of L1 writebacks to the L2 where the cache line to be written 550is in the S state. 551.It Li L1D_WB_L2.E_STATE 552.Pq Event 28H , Umask 04H 553Counts number of L1 writebacks to the L2 where the cache line to be written 554is in the E (exclusive) state. 555.It Li L1D_WB_L2.M_STATE 556.Pq Event 28H , Umask 08H 557Counts number of L1 writebacks to the L2 where the cache line to be written 558is in the M (modified) state. 559.It Li L1D_WB_L2.MESI 560.Pq Event 28H , Umask 0FH 561Counts all L1 writebacks to the L2. 562.It Li L3_LAT_CACHE.REFERENCE 563.Pq Event 2EH , Umask 02H 564Counts uncore Last Level Cache references. 565Because cache hierarchy, cache 566sizes and other implementation-specific characteristics; value comparison to 567estimate performance differences is not recommended. 568See Table A-1. 569.It Li L3_LAT_CACHE.MISS 570.Pq Event 2EH , Umask 01H 571Counts uncore Last Level Cache misses. 572Because cache hierarchy, cache sizes 573and other implementation-specific characteristics; value comparison to 574estimate performance differences is not recommended. 575See Table A-1. 576.It Li CPU_CLK_UNHALTED.THREAD_P 577.Pq Event 3CH , Umask 00H 578Counts the number of thread cycles while the thread is not in a halt state. 579The thread enters the halt state when it is running the HLT instruction. 580The core frequency may change from time to time due to power or thermal 581throttling. 582see Table A-1 583.It Li CPU_CLK_UNHALTED.REF_P 584.Pq Event 3CH , Umask 01H 585Increments at the frequency of TSC when not halted. 586see Table A-1 587.It Li DTLB_MISSES.ANY 588.Pq Event 49H , Umask 01H 589Counts the number of misses in the STLB which causes a page walk. 590.It Li DTLB_MISSES.WALK_COMPLETED 591.Pq Event 49H , Umask 02H 592Counts number of misses in the STLB which resulted in a completed page walk. 593.It Li DTLB_MISSES.WALK_CYCLES 594.Pq Event 49H , Umask 04H 595Counts cycles of page walk due to misses in the STLB. 596.It Li DTLB_MISSES.STLB_HIT 597.Pq Event 49H , Umask 10H 598Counts the number of DTLB first level misses that hit in the second level 599TLB. 600This event is only relevant if the core contains multiple DTLB levels. 601.It Li DTLB_MISSES.LARGE_WALK_COMPLETED 602.Pq Event 49H , Umask 80H 603Counts number of completed large page walks due to misses in the STLB. 604.It Li LOAD_HIT_PRE 605.Pq Event 4CH , Umask 01H 606Counts load operations sent to the L1 data cache while a previous SSE 607prefetch instruction to the same cache line has started prefetching but has 608not yet finished. 609.It Li L1D_PREFETCH.REQUESTS 610.Pq Event 4EH , Umask 01H 611Counts number of hardware prefetch requests dispatched out of the prefetch 612FIFO. 613.It Li L1D_PREFETCH.MISS 614.Pq Event 4EH , Umask 02H 615Counts number of hardware prefetch requests that miss the L1D. 616There are two 617prefetchers in the L1D. 618A streamer, which predicts lines sequentially after 619this one should be fetched, and the IP prefetcher that remembers access 620patterns for the current instruction. 621The streamer prefetcher stops on an 622L1D hit, while the IP prefetcher does not. 623.It Li L1D_PREFETCH.TRIGGERS 624.Pq Event 4EH , Umask 04H 625Counts number of prefetch requests triggered by the Finite State Machine and 626pushed into the prefetch FIFO. 627Some of the prefetch requests are dropped due 628to overwrites or competition between the IP index prefetcher and streamer 629prefetcher. 630The prefetch FIFO contains 4 entries. 631.It Li EPT.WALK_CYCLES 632.Pq Event 4FH , Umask 10H 633Counts Extended Page walk cycles. 634.It Li L1D.REPL 635.Pq Event 51H , Umask 01H 636Counts the number of lines brought into the L1 data cache. 637Counter 0, 1 only. 638.It Li L1D.M_REPL 639.Pq Event 51H , Umask 02H 640Counts the number of modified lines brought into the L1 data cache. 641Counter 0, 1 only. 642.It Li L1D.M_EVICT 643.Pq Event 51H , Umask 04H 644Counts the number of modified lines evicted from the L1 data cache due to 645replacement. 646Counter 0, 1 only. 647.It Li L1D.M_SNOOP_EVICT 648.Pq Event 51H , Umask 08H 649Counts the number of modified lines evicted from the L1 data cache due to 650snoop HITM intervention. 651Counter 0, 1 only 652.It Li L1D_CACHE_PREFETCH_LOCK_FB_HIT 653.Pq Event 52H , Umask 01H 654Counts the number of cacheable load lock speculated instructions accepted 655into the fill buffer. 656.It Li L1D_CACHE_LOCK_FB_HIT 657.Pq Event 53H , Umask 01H 658Counts the number of cacheable load lock speculated or retired instructions 659accepted into the fill buffer. 660.It Li OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_DATA 661.Pq Event 60H , Umask 01H 662Counts weighted cycles of offcore demand data read requests. 663Does not include L2 prefetch requests. 664Counter 0. 665.It Li OFFCORE_REQUESTS_OUTSTANDING.DEMAND.READ_CODE 666.Pq Event 60H , Umask 02H 667Counts weighted cycles of offcore demand code read requests. 668Does not include L2 prefetch requests. 669Counter 0. 670.It Li OFFCORE_REQUESTS_OUTSTANDING.DEMAND.RFO 671.Pq Event 60H , Umask 04H 672Counts weighted cycles of offcore demand RFO requests. 673Does not include L2 prefetch requests. 674Counter 0. 675.It Li OFFCORE_REQUESTS_OUTSTANDING.ANY.READ 676.Pq Event 60H , Umask 08H 677Counts weighted cycles of offcore read requests of any kind. 678Include L2 prefetch requests. 679Counter 0. 680.It Li CACHE_LOCK_CYCLES.L1D_L2 681.Pq Event 63H , Umask 01H 682Cycle count during which the L1D and L2 are locked. 683A lock is asserted when 684there is a locked memory access, due to uncacheable memory, a locked 685operation that spans two cache lines, or a page walk from an uncacheable 686page table. 687Counter 0, 1 only. 688L1D and L2 locks have a very high performance penalty and 689it is highly recommended to avoid such accesses. 690.It Li CACHE_LOCK_CYCLES.L1D 691.Pq Event 63H , Umask 02H 692Counts the number of cycles that cacheline in the L1 data cache unit is 693locked. 694Counter 0, 1 only. 695.It Li IO_TRANSACTIONS 696.Pq Event 6CH , Umask 01H 697Counts the number of completed I/O transactions. 698.It Li L1I.HITS 699.Pq Event 80H , Umask 01H 700Counts all instruction fetches that hit the L1 instruction cache. 701.It Li L1I.MISSES 702.Pq Event 80H , Umask 02H 703Counts all instruction fetches that miss the L1I cache. 704This includes 705instruction cache misses, streaming buffer misses, victim cache misses and 706uncacheable fetches. 707An instruction fetch miss is counted only once and not 708once for every cycle it is outstanding. 709.It Li L1I.READS 710.Pq Event 80H , Umask 03H 711Counts all instruction fetches, including uncacheable fetches that bypass 712the L1I. 713.It Li L1I.CYCLES_STALLED 714.Pq Event 80H , Umask 04H 715Cycle counts for which an instruction fetch stalls due to a L1I cache miss, 716ITLB miss or ITLB fault. 717.It Li LARGE_ITLB.HIT 718.Pq Event 82H , Umask 01H 719Counts number of large ITLB hits. 720.It Li ITLB_MISSES.ANY 721.Pq Event 85H , Umask 01H 722Counts the number of misses in all levels of the ITLB which causes a page 723walk. 724.It Li ITLB_MISSES.WALK_COMPLETED 725.Pq Event 85H , Umask 02H 726Counts number of misses in all levels of the ITLB which resulted in a 727completed page walk. 728.It Li ITLB_MISSES.WALK_CYCLES 729.Pq Event 85H , Umask 04H 730Counts ITLB miss page walk cycles. 731.It Li ITLB_MISSES.LARGE_WALK_COMPLETED 732.Pq Event 85H , Umask 80H 733Counts number of completed large page walks due to misses in the STLB. 734.It Li ILD_STALL.LCP 735.Pq Event 87H , Umask 01H 736Cycles Instruction Length Decoder stalls due to length changing prefixes: 73766, 67 or REX.W (for EM64T) instructions which change the length of the 738decoded instruction. 739.It Li ILD_STALL.MRU 740.Pq Event 87H , Umask 02H 741Instruction Length Decoder stall cycles due to Brand Prediction Unit (PBU) 742Most Recently Used (MRU) bypass. 743.It Li ILD_STALL.IQ_FULL 744.Pq Event 87H , Umask 04H 745Stall cycles due to a full instruction queue. 746.It Li ILD_STALL.REGEN 747.Pq Event 87H , Umask 08H 748Counts the number of regen stalls. 749.It Li ILD_STALL.ANY 750.Pq Event 87H , Umask 0FH 751Counts any cycles the Instruction Length Decoder is stalled. 752.It Li BR_INST_EXEC.COND 753.Pq Event 88H , Umask 01H 754Counts the number of conditional near branch instructions executed, but not 755necessarily retired. 756.It Li BR_INST_EXEC.DIRECT 757.Pq Event 88H , Umask 02H 758Counts all unconditional near branch instructions excluding calls and 759indirect branches. 760.It Li BR_INST_EXEC.INDIRECT_NON_CALL 761.Pq Event 88H , Umask 04H 762Counts the number of executed indirect near branch instructions that are not 763calls. 764.It Li BR_INST_EXEC.NON_CALLS 765.Pq Event 88H , Umask 07H 766Counts all non call near branch instructions executed, but not necessarily 767retired. 768.It Li BR_INST_EXEC.RETURN_NEAR 769.Pq Event 88H , Umask 08H 770Counts indirect near branches that have a return mnemonic. 771.It Li BR_INST_EXEC.DIRECT_NEAR_CALL 772.Pq Event 88H , Umask 10H 773Counts unconditional near call branch instructions, excluding non call 774branch, executed. 775.It Li BR_INST_EXEC.INDIRECT_NEAR_CALL 776.Pq Event 88H , Umask 20H 777Counts indirect near calls, including both register and memory indirect, 778executed. 779.It Li BR_INST_EXEC.NEAR_CALLS 780.Pq Event 88H , Umask 30H 781Counts all near call branches executed, but not necessarily retired. 782.It Li BR_INST_EXEC.TAKEN 783.Pq Event 88H , Umask 40H 784Counts taken near branches executed, but not necessarily retired. 785.It Li BR_INST_EXEC.ANY 786.Pq Event 88H , Umask 7FH 787Counts all near executed branches (not necessarily retired). 788This includes only instructions and not micro-op branches. 789Frequent branching is not necessarily a major performance issue. 790However frequent branch mispredictions may be a problem. 791.It Li BR_MISP_EXEC.COND 792.Pq Event 89H , Umask 01H 793Counts the number of mispredicted conditional near branch instructions 794executed, but not necessarily retired. 795.It Li BR_MISP_EXEC.DIRECT 796.Pq Event 89H , Umask 02H 797Counts mispredicted macro unconditional near branch instructions, excluding 798calls and indirect branches (should always be 0). 799.It Li BR_MISP_EXEC.INDIRECT_NON_CALL 800.Pq Event 89H , Umask 04H 801Counts the number of executed mispredicted indirect near branch instructions 802that are not calls. 803.It Li BR_MISP_EXEC.NON_CALLS 804.Pq Event 89H , Umask 07H 805Counts mispredicted non call near branches executed, but not necessarily 806retired. 807.It Li BR_MISP_EXEC.RETURN_NEAR 808.Pq Event 89H , Umask 08H 809Counts mispredicted indirect branches that have a rear return mnemonic. 810.It Li BR_MISP_EXEC.DIRECT_NEAR_CALL 811.Pq Event 89H , Umask 10H 812Counts mispredicted non-indirect near calls executed, (should always be 0). 813.It Li BR_MISP_EXEC.INDIRECT_NEAR_CALL 814.Pq Event 89H , Umask 20H 815Counts mispredicted indirect near calls executed, including both register 816and memory indirect. 817.It Li BR_MISP_EXEC.NEAR_CALLS 818.Pq Event 89H , Umask 30H 819Counts all mispredicted near call branches executed, but not necessarily 820retired. 821.It Li BR_MISP_EXEC.TAKEN 822.Pq Event 89H , Umask 40H 823Counts executed mispredicted near branches that are taken, but not 824necessarily retired. 825.It Li BR_MISP_EXEC.ANY 826.Pq Event 89H , Umask 7FH 827Counts the number of mispredicted near branch instructions that were 828executed, but not necessarily retired. 829.It Li RESOURCE_STALLS.ANY 830.Pq Event A2H , Umask 01H 831Counts the number of Allocator resource related stalls. 832Includes register renaming buffer entries, memory buffer entries. 833In addition to resource related stalls, this event counts some other events. 834Includes stalls arising 835during branch misprediction recovery, such as if retirement of the 836mispredicted branch is delayed and stalls arising while store buffer is 837draining from synchronizing operations. 838Does not include stalls due to SuperQ (off core) queue full, too many cache 839misses, etc. 840.It Li RESOURCE_STALLS.LOAD 841.Pq Event A2H , Umask 02H 842Counts the cycles of stall due to lack of load buffer for load operation. 843.It Li RESOURCE_STALLS.RS_FULL 844.Pq Event A2H , Umask 04H 845This event counts the number of cycles when the number of instructions in 846the pipeline waiting for execution reaches the limit the processor can 847handle. 848A high count of this event indicates that there are long latency 849operations in the pipe (possibly load and store operations that miss the L2 850cache, or instructions dependent upon instructions further down the pipeline 851that have yet to retire. 852When RS is full, new instructions can not enter the reservation station and 853start execution. 854.It Li RESOURCE_STALLS.STORE 855.Pq Event A2H , Umask 08H 856This event counts the number of cycles that a resource related stall will 857occur due to the number of store instructions reaching the limit of the 858pipeline, (i.e. all store buffers are used). 859The stall ends when a store 860instruction commits its data to the cache or memory. 861.It Li RESOURCE_STALLS.ROB_FULL 862.Pq Event A2H , Umask 10H 863Counts the cycles of stall due to re- order buffer full. 864.It Li RESOURCE_STALLS.FPCW 865.Pq Event A2H , Umask 20H 866Counts the number of cycles while execution was stalled due to writing the 867floating-point unit (FPU) control word. 868.It Li RESOURCE_STALLS.MXCSR 869.Pq Event A2H , Umask 40H 870Stalls due to the MXCSR register rename occurring to close to a previous 871MXCSR rename. 872The MXCSR provides control and status for the MMX registers. 873.It Li RESOURCE_STALLS.OTHER 874.Pq Event A2H , Umask 80H 875Counts the number of cycles while execution was stalled due to other 876resource issues. 877.It Li MACRO_INSTS.FUSIONS_DECODED 878.Pq Event A6H , Umask 01H 879Counts the number of instructions decoded that are macro-fused but not 880necessarily executed or retired. 881.It Li BACLEAR_FORCE_IQ 882.Pq Event A7H , Umask 01H 883Counts number of times a BACLEAR was forced by the Instruction Queue. 884The IQ is also responsible for providing conditional branch prediction 885direction based on a static scheme and dynamic data provided by the L2 886Branch Prediction Unit. 887If the conditional branch target is not found in the Target 888Array and the IQ predicts that the branch is taken, then the IQ will force 889the Branch Address Calculator to issue a BACLEAR. 890Each BACLEAR asserted by 891the BAC generates approximately an 8 cycle bubble in the instruction fetch 892pipeline. 893.It Li LSD.UOPS 894.Pq Event A8H , Umask 01H 895Counts the number of micro-ops delivered by loop stream detector 896Use cmask=1 and invert to count cycles 897.It Li ITLB_FLUSH 898.Pq Event AEH , Umask 01H 899Counts the number of ITLB flushes 900.It Li OFFCORE_REQUESTS.DEMAND.READ_DATA 901.Pq Event B0H , Umask 01H 902Counts number of offcore demand data read requests. 903Does not count L2 prefetch requests. 904.It Li OFFCORE_REQUESTS.DEMAND.READ_CODE 905.Pq Event B0H , Umask 02H 906Counts number of offcore demand code read requests. 907Does not count L2 prefetch requests. 908.It Li OFFCORE_REQUESTS.DEMAND.RFO 909.Pq Event B0H , Umask 04H 910Counts number of offcore demand RFO requests. 911Does not count L2 prefetch requests. 912.It Li OFFCORE_REQUESTS.ANY.READ 913.Pq Event B0H , Umask 08H 914Counts number of offcore read requests. 915Includes L2 prefetch requests. 916.It Li OFFCORE_REQUESTS.ANY.RFO 917.Pq Event 80H , Umask 10H 918Counts number of offcore RFO requests. 919Includes L2 prefetch requests. 920.It Li OFFCORE_REQUESTS.L1D_WRITEBACK 921.Pq Event B0H , Umask 40H 922Counts number of L1D writebacks to the uncore. 923.It Li OFFCORE_REQUESTS.ANY 924.Pq Event B0H , Umask 80H 925Counts all offcore requests. 926.It Li UOPS_EXECUTED.PORT0 927.Pq Event B1H , Umask 01H 928Counts number of Uops executed that were issued on port 0. 929Port 0 handles integer arithmetic, SIMD and FP add Uops. 930.It Li UOPS_EXECUTED.PORT1 931.Pq Event B1H , Umask 02H 932Counts number of Uops executed that were issued on port 1. 933Port 1 handles integer arithmetic, SIMD, integer shift, FP multiply and 934FP divide Uops. 935.It Li UOPS_EXECUTED.PORT2_CORE 936.Pq Event B1H , Umask 04H 937Counts number of Uops executed that were issued on port 2. 938Port 2 handles the load Uops. 939This is a core count only and can not be collected per 940thread. 941.It Li UOPS_EXECUTED.PORT3_CORE 942.Pq Event B1H , Umask 08H 943Counts number of Uops executed that were issued on port 3. 944Port 3 handles store Uops. 945This is a core count only and can not be collected per thread. 946.It Li UOPS_EXECUTED.PORT4_CORE 947.Pq Event B1H , Umask 10H 948Counts number of Uops executed that where issued on port 4. 949Port 4 handles the value to be stored for the store Uops issued on port 3. 950This is a core count only and can not be collected per thread. 951.It Li UOPS_EXECUTED.CORE_ACTIVE_CYCLES_NO_PORT5 952.Pq Event B1H , Umask 1FH 953Counts number of cycles there are one or more uops being executed and were 954issued on ports 0-4. 955This is a core count only and can not be collected per thread. 956.It Li UOPS_EXECUTED.PORT5 957.Pq Event B1H , Umask 20H 958Counts number of Uops executed that where issued on port 5. 959.It Li UOPS_EXECUTED.CORE_ACTIVE_CYCLES 960.Pq Event B1H , Umask 3FH 961Counts number of cycles there are one or more uops being executed on any 962ports. 963This is a core count only and can not be collected per thread. 964.It Li UOPS_EXECUTED.PORT015 965.Pq Event B1H , Umask 40H 966Counts number of Uops executed that where issued on port 0, 1, or 5. 967Use cmask=1, invert=1 to count stall cycles. 968.It Li UOPS_EXECUTED.PORT234 969.Pq Event B1H , Umask 80H 970Counts number of Uops executed that where issued on port 2, 3, or 4. 971.It Li OFFCORE_REQUESTS_SQ_FULL 972.Pq Event B2H , Umask 01H 973Counts number of cycles the SQ is full to handle off-core requests. 974.It Li SNOOPQ_REQUESTS_OUTSTANDING.DATA 975.Pq Event B3H , Umask 01H 976Counts weighted cycles of snoopq requests for data. 977Counter 0 only 978Use cmask=1 to count cycles not empty. 979.It Li SNOOPQ_REQUESTS_OUTSTANDING.INVALIDATE 980.Pq Event B3H , Umask 02H 981Counts weighted cycles of snoopq invalidate requests. 982Counter 0 only. 983Use cmask=1 to count cycles not empty. 984.It Li SNOOPQ_REQUESTS_OUTSTANDING.CODE 985.Pq Event B3H , Umask 04H 986Counts weighted cycles of snoopq requests for code. 987Counter 0 only. 988Use cmask=1 to count cycles not empty. 989.It Li SNOOPQ_REQUESTS.CODE 990.Pq Event B4H , Umask 01H 991Counts the number of snoop code requests. 992.It Li SNOOPQ_REQUESTS.DATA 993.Pq Event B4H , Umask 02H 994Counts the number of snoop data requests. 995.It Li SNOOPQ_REQUESTS.INVALIDATE 996.Pq Event B4H , Umask 04H 997Counts the number of snoop invalidate requests 998.It Li OFF_CORE_RESPONSE_0 999.Pq Event B7H , Umask 01H 1000see Section 30.6.1.3, Off-core Response Performance Monitoring in the 1001Processor Core. 1002Requires programming MSR 01A6H. 1003.It Li SNOOP_RESPONSE.HIT 1004.Pq Event B8H , Umask 01H 1005Counts HIT snoop response sent by this thread in response to a snoop 1006request. 1007.It Li SNOOP_RESPONSE.HITE 1008.Pq Event B8H , Umask 02H 1009Counts HIT E snoop response sent by this thread in response to a snoop 1010request. 1011.It Li SNOOP_RESPONSE.HITM 1012.Pq Event B8H , Umask 04H 1013Counts HIT M snoop response sent by this thread in response to a snoop 1014request. 1015.It Li OFF_CORE_RESPONSE_1 1016.Pq Event BBH , Umask 01H 1017see Section 30.6.1.3, Off-core Response Performance Monitoring in the 1018Processor Core. 1019Use MSR 01A7H. 1020.It Li INST_RETIRED.ANY_P 1021.Pq Event C0H , Umask 01H 1022See Table A-1 1023Notes: INST_RETIRED.ANY is counted by a designated fixed counter. 1024INST_RETIRED.ANY_P is counted by a programmable counter and is an 1025architectural performance event. 1026Event is supported if CPUID.A.EBX[1] = 0. 1027Counting: Faulting executions of GETSEC/VM entry/VM Exit/MWait will not 1028count as retired instructions. 1029.It Li INST_RETIRED.X87 1030.Pq Event C0H , Umask 02H 1031Counts the number of floating point computational operations retired 1032floating point computational operations executed by the assist handler and 1033sub-operations of complex floating point instructions like transcendental 1034instructions. 1035.It Li INST_RETIRED.MMX 1036.Pq Event C0H , Umask 04H 1037Counts the number of retired: MMX instructions. 1038.It Li UOPS_RETIRED.ANY 1039.Pq Event C2H , Umask 01H 1040Counts the number of micro-ops retired, (macro-fused=1, micro- fused=2, 1041others=1; maximum count of 8 per cycle). 1042Most instructions are composed of one or two micro-ops. 1043Some instructions are decoded into longer sequences 1044such as repeat instructions, floating point transcendental instructions, and 1045assists. 1046Use cmask=1 and invert to count active cycles or stalled cycles 1047.It Li UOPS_RETIRED.RETIRE_SLOTS 1048.Pq Event C2H , Umask 02H 1049Counts the number of retirement slots used each cycle 1050.It Li UOPS_RETIRED.MACRO_FUSED 1051.Pq Event C2H , Umask 04H 1052Counts number of macro-fused uops retired. 1053.It Li MACHINE_CLEARS.CYCLES 1054.Pq Event C3H , Umask 01H 1055Counts the cycles machine clear is asserted. 1056.It Li MACHINE_CLEARS.MEM_ORDER 1057.Pq Event C3H , Umask 02H 1058Counts the number of machine clears due to memory order conflicts. 1059.It Li MACHINE_CLEARS.SMC 1060.Pq Event C3H , Umask 04H 1061Counts the number of times that a program writes to a code section. 1062Self-modifying code causes a sever penalty in all Intel 64 and IA-32 1063processors. 1064The modified cache line is written back to the L2 and L3caches. 1065.It Li BR_INST_RETIRED.ANY_P 1066.Pq Event C4H , Umask 00H 1067See Table A-1. 1068.It Li BR_INST_RETIRED.CONDITIONAL 1069.Pq Event C4H , Umask 01H 1070Counts the number of conditional branch instructions retired. 1071.It Li BR_INST_RETIRED.NEAR_CALL 1072.Pq Event C4H , Umask 02H 1073Counts the number of direct & indirect near unconditional calls retired. 1074.It Li BR_INST_RETIRED.ALL_BRANCHES 1075.Pq Event C4H , Umask 04H 1076Counts the number of branch instructions retired. 1077.It Li BR_MISP_RETIRED.ANY_P 1078.Pq Event C5H , Umask 00H 1079See Table A-1. 1080.It Li BR_MISP_RETIRED.CONDITIONAL 1081.Pq Event C5H , Umask 01H 1082Counts mispredicted conditional retired calls. 1083.It Li BR_MISP_RETIRED.NEAR_CALL 1084.Pq Event C5H , Umask 02H 1085Counts mispredicted direct & indirect near unconditional retired calls. 1086.It Li BR_MISP_RETIRED.ALL_BRANCHES 1087.Pq Event C5H , Umask 04H 1088Counts all mispredicted retired calls. 1089.It Li SSEX_UOPS_RETIRED.PACKED_SINGLE 1090.Pq Event C7H , Umask 01H 1091Counts SIMD packed single-precision floating point Uops retired. 1092.It Li SSEX_UOPS_RETIRED.SCALAR_SINGLE 1093.Pq Event C7H , Umask 02H 1094Counts SIMD calar single-precision floating point Uops retired. 1095.It Li SSEX_UOPS_RETIRED.PACKED_DOUBLE 1096.Pq Event C7H , Umask 04H 1097Counts SIMD packed double- precision floating point Uops retired. 1098.It Li SSEX_UOPS_RETIRED.SCALAR_DOUBLE 1099.Pq Event C7H , Umask 08H 1100Counts SIMD scalar double-precision floating point Uops retired. 1101.It Li SSEX_UOPS_RETIRED.VECTOR_INTEGER 1102.Pq Event C7H , Umask 10H 1103Counts 128-bit SIMD vector integer Uops retired. 1104.It Li ITLB_MISS_RETIRED 1105.Pq Event C8H , Umask 20H 1106Counts the number of retired instructions that missed the ITLB when the 1107instruction was fetched. 1108.It Li MEM_LOAD_RETIRED.L1D_HIT 1109.Pq Event CBH , Umask 01H 1110Counts number of retired loads that hit the L1 data cache. 1111.It Li MEM_LOAD_RETIRED.L2_HIT 1112.Pq Event CBH , Umask 02H 1113Counts number of retired loads that hit the L2 data cache. 1114.It Li MEM_LOAD_RETIRED.L3_UNSHARED_HIT 1115.Pq Event CBH , Umask 04H 1116Counts number of retired loads that hit their own, unshared lines in the L3 1117cache. 1118.It Li MEM_LOAD_RETIRED.OTHER_CORE_L2_HIT_HITM 1119.Pq Event CBH , Umask 08H 1120Counts number of retired loads that hit in a sibling core's L2 (on die 1121core). 1122Since the L3 is inclusive of all cores on the package, this is an L3 hit. 1123This counts both clean or modified hits. 1124.It Li MEM_LOAD_RETIRED.L3_MISS 1125.Pq Event CBH , Umask 10H 1126Counts number of retired loads that miss the L3 cache. 1127The load was satisfied by a remote socket, local memory or an IOH. 1128.It Li MEM_LOAD_RETIRED.HIT_LFB 1129.Pq Event CBH , Umask 40H 1130Counts number of retired loads that miss the L1D and the address is located 1131in an allocated line fill buffer and will soon be committed to cache. 1132This is counting secondary L1D misses. 1133.It Li MEM_LOAD_RETIRED.DTLB_MISS 1134.Pq Event CBH , Umask 80H 1135Counts the number of retired loads that missed the DTLB. 1136The DTLB miss is not counted if the load operation causes a fault. 1137This event counts loads from cacheable memory only. 1138The event does not count loads by software prefetches. 1139Counts both primary and secondary misses to the TLB. 1140.It Li FP_MMX_TRANS.TO_FP 1141.Pq Event CCH , Umask 01H 1142Counts the first floating-point instruction following any MMX instruction. 1143You can use this event to estimate the penalties for the transitions between 1144floating-point and MMX technology states. 1145.It Li FP_MMX_TRANS.TO_MMX 1146.Pq Event CCH , Umask 02H 1147Counts the first MMX instruction following a floating-point instruction. 1148You can use this event to estimate the penalties for the transitions between 1149floating-point and MMX technology states. 1150.It Li FP_MMX_TRANS.ANY 1151.Pq Event CCH , Umask 03H 1152Counts all transitions from floating point to MMX instructions and from MMX 1153instructions to floating point instructions. 1154You can use this event to estimate the penalties for the transitions between 1155floating-point and MMX technology states. 1156.It Li MACRO_INSTS.DECODED 1157.Pq Event D0H , Umask 01H 1158Counts the number of instructions decoded, (but not necessarily executed or 1159retired). 1160.It Li UOPS_DECODED.STALL_CYCLES 1161.Pq Event D1H , Umask 01H 1162Counts the cycles of decoder stalls. 1163.It Li UOPS_DECODED.MS 1164.Pq Event D1H , Umask 02H 1165Counts the number of Uops decoded by the Microcode Sequencer, MS. 1166The MS delivers uops when the instruction is more than 4 uops long or a 1167microcode assist is occurring. 1168.It Li UOPS_DECODED.ESP_FOLDING 1169.Pq Event D1H , Umask 04H 1170Counts number of stack pointer (ESP) instructions decoded: push , pop , call 1171, ret, etc. 1172ESP instructions do not generate a Uop to increment or decrement ESP. 1173Instead, they update an ESP_Offset register that keeps track of the 1174delta to the current value of the ESP register. 1175.It Li UOPS_DECODED.ESP_SYNC 1176.Pq Event D1H , Umask 08H 1177Counts number of stack pointer (ESP) sync operations where an ESP 1178instruction is corrected by adding the ESP offset register to the current 1179value of the ESP register. 1180.It Li RAT_STALLS.FLAGS 1181.Pq Event D2H , Umask 01H 1182Counts the number of cycles during which execution stalled due to several 1183reasons, one of which is a partial flag register stall. 1184A partial register 1185stall may occur when two conditions are met: 1) an instruction modifies 1186some, but not all, of the flags in the flag register and 2) the next 1187instruction, which depends on flags, depends on flags that were not modified 1188by this instruction. 1189.It Li RAT_STALLS.REGISTERS 1190.Pq Event D2H , Umask 02H 1191This event counts the number of cycles instruction execution latency became 1192longer than the defined latency because the instruction used a register that 1193was partially written by previous instruction. 1194.It Li RAT_STALLS.ROB_READ_PORT 1195.Pq Event D2H , Umask 04H 1196Counts the number of cycles when ROB read port stalls occurred, which did 1197not allow new micro-ops to enter the out-of-order pipeline. 1198Note that, at 1199this stage in the pipeline, additional stalls may occur at the same cycle 1200and prevent the stalled micro-ops from entering the pipe. 1201In such a case, 1202micro-ops retry entering the execution pipe in the next cycle and the 1203ROB-read port stall is counted again. 1204.It Li RAT_STALLS.SCOREBOARD 1205.Pq Event D2H , Umask 08H 1206Counts the cycles where we stall due to microarchitecturally required 1207serialization. 1208Microcode scoreboarding stalls. 1209.It Li RAT_STALLS.ANY 1210.Pq Event D2H , Umask 0FH 1211Counts all Register Allocation Table stall cycles due to: Cycles when ROB 1212read port stalls occurred, which did not allow new micro-ops to enter the 1213execution pipe. 1214Cycles when partial register stalls occurred Cycles when 1215flag stalls occurred Cycles floating-point unit (FPU) status word stalls 1216occurred. 1217To count each of these conditions separately use the events: 1218RAT_STALLS.ROB_READ_PORT, RAT_STALLS.PARTIAL, RAT_STALLS.FLAGS, and 1219RAT_STALLS.FPSW. 1220.It Li SEG_RENAME_STALLS 1221.Pq Event D4H , Umask 01H 1222Counts the number of stall cycles due to the lack of renaming resources for 1223the ES, DS, FS, and GS segment registers. 1224If a segment is renamed but not 1225retired and a second update to the same segment occurs, a stall occurs in 1226the front- end of the pipeline until the renamed segment retires. 1227.It Li ES_REG_RENAMES 1228.Pq Event D5H , Umask 01H 1229Counts the number of times the ES segment register is renamed. 1230.It Li UOP_UNFUSION 1231.Pq Event DBH , Umask 01H 1232Counts unfusion events due to floating point exception to a fused uop. 1233.It Li BR_INST_DECODED 1234.Pq Event E0H , Umask 01H 1235Counts the number of branch instructions decoded. 1236.It Li BPU_MISSED_CALL_RET 1237.Pq Event E5H , Umask 01H 1238Counts number of times the Branch Prediction Unit missed predicting a call 1239or return branch. 1240.It Li BACLEAR.CLEAR 1241.Pq Event E6H , Umask 01H 1242Counts the number of times the front end is resteered, mainly when the 1243Branch Prediction Unit cannot provide a correct prediction and this is 1244corrected by the Branch Address Calculator at the front end. 1245This can occur 1246if the code has many branches such that they cannot be consumed by the BPU. 1247Each BACLEAR asserted by the BAC generates approximately an 8 cycle bubble 1248in the instruction fetch pipeline. 1249The effect on total execution time depends on the surrounding code. 1250.It Li BACLEAR.BAD_TARGET 1251.Pq Event E6H , Umask 02H 1252Counts number of Branch Address Calculator clears (BACLEAR) asserted due to 1253conditional branch instructions in which there was a target hit but the 1254direction was wrong. 1255Each BACLEAR asserted by the BAC generates 1256approximately an 8 cycle bubble in the instruction fetch pipeline. 1257.It Li BPU_CLEARS.EARLY 1258.Pq Event E8H , Umask 01H 1259Counts early (normal) Branch Prediction Unit clears: BPU predicted a taken 1260branch after incorrectly assuming that it was not taken. 1261The BPU clear leads to 2 cycle bubble in the Front End. 1262.It Li BPU_CLEARS.LATE 1263.Pq Event E8H , Umask 02H 1264Counts late Branch Prediction Unit clears due to Most Recently Used 1265conflicts. 1266The PBU clear leads to a 3 cycle bubble in the Front End. 1267.It Li THREAD_ACTIVE 1268.Pq Event ECH , Umask 01H 1269Counts cycles threads are active. 1270.It Li L2_TRANSACTIONS.LOAD 1271.Pq Event F0H , Umask 01H 1272Counts L2 load operations due to HW prefetch or demand loads. 1273.It Li L2_TRANSACTIONS.RFO 1274.Pq Event F0H , Umask 02H 1275Counts L2 RFO operations due to HW prefetch or demand RFOs. 1276.It Li L2_TRANSACTIONS.IFETCH 1277.Pq Event F0H , Umask 04H 1278Counts L2 instruction fetch operations due to HW prefetch or demand ifetch. 1279.It Li L2_TRANSACTIONS.PREFETCH 1280.Pq Event F0H , Umask 08H 1281Counts L2 prefetch operations. 1282.It Li L2_TRANSACTIONS.L1D_WB 1283.Pq Event F0H , Umask 10H 1284Counts L1D writeback operations to the L2. 1285.It Li L2_TRANSACTIONS.FILL 1286.Pq Event F0H , Umask 20H 1287Counts L2 cache line fill operations due to load, RFO, L1D writeback or 1288prefetch. 1289.It Li L2_TRANSACTIONS.WB 1290.Pq Event F0H , Umask 40H 1291Counts L2 writeback operations to the L3. 1292.It Li L2_TRANSACTIONS.ANY 1293.Pq Event F0H , Umask 80H 1294Counts all L2 cache operations. 1295.It Li L2_LINES_IN.S_STATE 1296.Pq Event F1H , Umask 02H 1297Counts the number of cache lines allocated in the L2 cache in the S (shared) 1298state. 1299.It Li L2_LINES_IN.E_STATE 1300.Pq Event F1H , Umask 04H 1301Counts the number of cache lines allocated in the L2 cache in the E 1302(exclusive) state. 1303.It Li L2_LINES_IN.ANY 1304.Pq Event F1H , Umask 07H 1305Counts the number of cache lines allocated in the L2 cache. 1306.It Li L2_LINES_OUT.DEMAND_CLEAN 1307.Pq Event F2H , Umask 01H 1308Counts L2 clean cache lines evicted by a demand request. 1309.It Li L2_LINES_OUT.DEMAND_DIRTY 1310.Pq Event F2H , Umask 02H 1311Counts L2 dirty (modified) cache lines evicted by a demand request. 1312.It Li L2_LINES_OUT.PREFETCH_CLEAN 1313.Pq Event F2H , Umask 04H 1314Counts L2 clean cache line evicted by a prefetch request. 1315.It Li L2_LINES_OUT.PREFETCH_DIRTY 1316.Pq Event F2H , Umask 08H 1317Counts L2 modified cache line evicted by a prefetch request. 1318.It Li L2_LINES_OUT.ANY 1319.Pq Event F2H , Umask 0FH 1320Counts all L2 cache lines evicted for any reason. 1321.It Li SQ_MISC.LRU_HINTS 1322.Pq Event F4H , Umask 04H 1323Counts number of Super Queue LRU hints sent to L3. 1324.It Li SQ_MISC.SPLIT_LOCK 1325.Pq Event F4H , Umask 10H 1326Counts the number of SQ lock splits across a cache line. 1327.It Li SQ_FULL_STALL_CYCLES 1328.Pq Event F6H , Umask 01H 1329Counts cycles the Super Queue is full. 1330Neither of the threads on this core will be able to access the uncore. 1331.It Li FP_ASSIST.ALL 1332.Pq Event F7H , Umask 01H 1333Counts the number of floating point operations executed that required 1334micro-code assist intervention. 1335Assists are required in the following cases: 1336SSE instructions, (Denormal input when the DAZ flag is off or Underflow 1337result when the FTZ flag is off): x87 instructions, (NaN or denormal are 1338loaded to a register or used as input from memory, Division by 0 or 1339Underflow output). 1340.It Li FP_ASSIST.OUTPUT 1341.Pq Event F7H , Umask 02H 1342Counts number of floating point micro-code assist when the output value 1343(destination register) is invalid. 1344.It Li FP_ASSIST.INPUT 1345.Pq Event F7H , Umask 04H 1346Counts number of floating point micro-code assist when the input value (one 1347of the source operands to an FP instruction) is invalid. 1348.It Li SIMD_INT_64.PACKED_MPY 1349.Pq Event FDH , Umask 01H 1350Counts number of SID integer 64 bit packed multiply operations. 1351.It Li SIMD_INT_64.PACKED_SHIFT 1352.Pq Event FDH , Umask 02H 1353Counts number of SID integer 64 bit packed shift operations. 1354.It Li SIMD_INT_64.PACK 1355.Pq Event FDH , Umask 04H 1356Counts number of SID integer 64 bit pack operations. 1357.It Li SIMD_INT_64.UNPACK 1358.Pq Event FDH , Umask 08H 1359Counts number of SID integer 64 bit unpack operations. 1360.It Li SIMD_INT_64.PACKED_LOGICAL 1361.Pq Event FDH , Umask 10H 1362Counts number of SID integer 64 bit logical operations. 1363.It Li SIMD_INT_64.PACKED_ARITH 1364.Pq Event FDH , Umask 20H 1365Counts number of SID integer 64 bit arithmetic operations. 1366.It Li SIMD_INT_64.SHUFFLE_MOVE 1367.Pq Event FDH , Umask 40H 1368Counts number of SID integer 64 bit shift or move operations. 1369.El 1370.Sh SEE ALSO 1371.Xr pmc 3 , 1372.Xr pmc.atom 3 , 1373.Xr pmc.core 3 , 1374.Xr pmc.corei7 3 , 1375.Xr pmc.corei7uc 3 , 1376.Xr pmc.iaf 3 , 1377.Xr pmc.k7 3 , 1378.Xr pmc.k8 3 , 1379.Xr pmc.soft 3 , 1380.Xr pmc.tsc 3 , 1381.Xr pmc.ucf 3 , 1382.Xr pmc.westmereuc 3 , 1383.Xr pmc_cpuinfo 3 , 1384.Xr pmclog 3 , 1385.Xr hwpmc 4 1386.Sh HISTORY 1387The 1388.Nm pmc 1389library first appeared in 1390.Fx 6.0 . 1391.Sh AUTHORS 1392The 1393.Lb libpmc 1394library was written by 1395.An Joseph Koshy Aq Mt jkoshy@FreeBSD.org . 1396