]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libpmc/pmc.sandybridgexeon.3
pmc(3): mandoc clean ups
[FreeBSD/FreeBSD.git] / lib / libpmc / pmc.sandybridgexeon.3
1 .\" Copyright (c) 2012 Hiren Panchasara <hiren.panchasara@gmail.com>
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .\" $FreeBSD$
26 .\"
27 .Dd October 18, 2012
28 .Dt PMC.SANDYBRIDGEXEON 3
29 .Os
30 .Sh NAME
31 .Nm pmc.sandybridgexeon
32 .Nd measurement events for
33 .Tn Intel
34 .Tn Sandy Bridge Xeon
35 family CPUs
36 .Sh LIBRARY
37 .Lb libpmc
38 .Sh SYNOPSIS
39 .In pmc.h
40 .Sh DESCRIPTION
41 .Tn Intel
42 .Tn "Sandy Bridge Xeon"
43 CPUs contain PMCs conforming to version 2 of the
44 .Tn Intel
45 performance measurement architecture.
46 These CPUs may contain up to two classes of PMCs:
47 .Bl -tag -width "Li PMC_CLASS_IAP"
48 .It Li PMC_CLASS_IAF
49 Fixed-function counters that count only one hardware event per counter.
50 .It Li PMC_CLASS_IAP
51 Programmable counters that may be configured to count one of a defined
52 set of hardware events.
53 .El
54 .Pp
55 The number of PMCs available in each class and their widths need to be
56 determined at run time by calling
57 .Xr pmc_cpuinfo 3 .
58 .Pp
59 Intel Sandy Bridge Xeon PMCs are documented in
60 .Rs
61 .%B "Intel(R) 64 and IA-32 Architectures Software Developer's Manual"
62 .%T "Volume 3B: System Programming Guide, Part 2"
63 .%N "Order Number: 253669-043US"
64 .%D August 2012
65 .%Q "Intel Corporation"
66 .Re
67 .Ss SANDYBRIDGE XEON FIXED FUNCTION PMCS
68 These PMCs and their supported events are documented in
69 .Xr pmc.iaf 3 .
70 .Ss SANDYBRIDGE XEON PROGRAMMABLE PMCS
71 The programmable PMCs support the following capabilities:
72 .Bl -column "PMC_CAP_INTERRUPT" "Support"
73 .It Em Capability Ta Em Support
74 .It PMC_CAP_CASCADE Ta \&No
75 .It PMC_CAP_EDGE Ta Yes
76 .It PMC_CAP_INTERRUPT Ta Yes
77 .It PMC_CAP_INVERT Ta Yes
78 .It PMC_CAP_READ Ta Yes
79 .It PMC_CAP_PRECISE Ta \&No
80 .It PMC_CAP_SYSTEM Ta Yes
81 .It PMC_CAP_TAGGING Ta \&No
82 .It PMC_CAP_THRESHOLD Ta Yes
83 .It PMC_CAP_USER Ta Yes
84 .It PMC_CAP_WRITE Ta Yes
85 .El
86 .Ss Event Qualifiers
87 Event specifiers for these PMCs support the following common
88 qualifiers:
89 .Bl -tag -width indent
90 .It Li rsp= Ns Ar value
91 Configure the Off-core Response bits.
92 .Bl -tag -width indent
93 .It Li REQ_DMND_DATA_RD
94 Counts the number of demand and DCU prefetch data reads of full and partial
95 cachelines as well as demand data page table entry cacheline reads.
96 Does not count L2 data read prefetches or instruction fetches.
97 .It Li REQ_DMND_RFO
98 Counts the number of demand and DCU prefetch reads for ownership (RFO)
99 requests generated by a write to data cacheline.
100 Does not count L2 RFO prefetches.
101 .It Li REQ_DMND_IFETCH
102 Counts the number of demand and DCU prefetch instruction cacheline reads.
103 Does not count L2 code read prefetches.
104 .It Li REQ_WB
105 Counts the number of writeback (modified to exclusive) transactions.
106 .It Li REQ_PF_DATA_RD
107 Counts the number of data cacheline reads generated by L2 prefetchers.
108 .It Li REQ_PF_RFO
109 Counts the number of RFO requests generated by L2 prefetchers.
110 .It Li REQ_PF_IFETCH
111 Counts the number of code reads generated by L2 prefetchers.
112 .It Li REQ_PF_LLC_DATA_RD
113 L2 prefetcher to L3 for loads.
114 .It Li REQ_PF_LLC_RFO
115 RFO requests generated by L2 prefetcher
116 .It Li REQ_PF_LLC_IFETCH
117 L2 prefetcher to L3 for instruction fetches.
118 .It Li REQ_BUS_LOCKS
119 Bus lock and split lock requests.
120 .It Li REQ_STRM_ST
121 Streaming store requests.
122 .It Li REQ_OTHER
123 Any other request that crosses IDI, including I/O.
124 .It Li RES_ANY
125 Catch all value for any response types.
126 .It Li RES_SUPPLIER_NO_SUPP
127 No Supplier Information available.
128 .It Li RES_SUPPLIER_LLC_HITM
129 M-state initial lookup stat in L3.
130 .It Li RES_SUPPLIER_LLC_HITE
131 E-state.
132 .It Li RES_SUPPLIER_LLC_HITS
133 S-state.
134 .It Li RES_SUPPLIER_LLC_HITF
135 F-state.
136 .It Li RES_SUPPLIER_LOCAL
137 Local DRAM Controller.
138 .It Li RES_SNOOP_SNP_NONE
139 No details on snoop-related information.
140 .It Li RES_SNOOP_SNP_NO_NEEDED
141 No snoop was needed to satisfy the request.
142 .It Li RES_SNOOP_SNP_MISS
143 A snoop was needed and it missed all snooped caches:
144 -For LLC Hit, ReslHitl was returned by all cores
145 -For LLC Miss, Rspl was returned by all sockets and data was returned from
146 DRAM.
147 .It Li RES_SNOOP_HIT_NO_FWD
148 A snoop was needed and it hits in at least one snooped cache.
149 Hit denotes a cache-line was valid before snoop effect.
150 This includes:
151 -Snoop Hit w/ Invalidation (LLC Hit, RFO)
152 -Snoop Hit, Left Shared (LLC Hit/Miss, IFetch/Data_RD)
153 -Snoop Hit w/ Invalidation and No Forward (LLC Miss, RFO Hit S)
154 In the LLC Miss case, data is returned from DRAM.
155 .It Li RES_SNOOP_HIT_FWD
156 A snoop was needed and data was forwarded from a remote socket.
157 This includes:
158 -Snoop Forward Clean, Left Shared (LLC Hit/Miss, IFetch/Data_RD/RFT).
159 .It Li RES_SNOOP_HITM
160 A snoop was needed and it HitM-ed in local or remote cache.
161 HitM denotes a cache-line was in modified state before effect as a results of snoop.
162 This includes:
163 -Snoop HitM w/ WB (LLC miss, IFetch/Data_RD)
164 -Snoop Forward Modified w/ Invalidation (LLC Hit/Miss, RFO)
165 -Snoop MtoS (LLC Hit, IFetch/Data_RD).
166 .It Li RES_NON_DRAM
167 Target was non-DRAM system address.
168 This includes MMIO transactions.
169 .El
170 .It Li cmask= Ns Ar value
171 Configure the PMC to increment only if the number of configured
172 events measured in a cycle is greater than or equal to
173 .Ar value .
174 .It Li edge
175 Configure the PMC to count the number of de-asserted to asserted
176 transitions of the conditions expressed by the other qualifiers.
177 If specified, the counter will increment only once whenever a
178 condition becomes true, irrespective of the number of clocks during
179 which the condition remains true.
180 .It Li inv
181 Invert the sense of comparison when the
182 .Dq Li cmask
183 qualifier is present, making the counter increment when the number of
184 events per cycle is less than the value specified by the
185 .Dq Li cmask
186 qualifier.
187 .It Li os
188 Configure the PMC to count events happening at processor privilege
189 level 0.
190 .It Li usr
191 Configure the PMC to count events occurring at privilege levels 1, 2
192 or 3.
193 .El
194 .Pp
195 If neither of the
196 .Dq Li os
197 or
198 .Dq Li usr
199 qualifiers are specified, the default is to enable both.
200 .Ss Event Specifiers (Programmable PMCs)
201 Sandy Bridge Xeon programmable PMCs support the following events:
202 .Bl -tag -width indent
203 .It Li LD_BLOCKS.DATA_UNKNOWN
204 .Pq Event 03H , Umask 01H
205 blocked loads due to store buffer blocks with unknown data.
206 .It Li LD_BLOCKS.STORE_FORWARD
207 .Pq Event 03H , Umask 02H
208 loads blocked by overlapping with store buffer that cannot
209 be forwarded .
210 .It Li LD_BLOCKS.NO_SR
211 .Pq Event 03H , Umask 08H
212 # of Split loads blocked due to resource not available.
213 .It Li LD_BLOCKS.ALL_BLOCK
214 .Pq Event 03H , Umask 10H
215 Number of cases where any load is blocked but has no
216 DCU miss.
217 .It Li MISALIGN_MEM_REF.LOADS
218 .Pq Event 05H , Umask 01H
219 Speculative cache-line split load uops dispatched to
220 L1D.
221 .It Li MISALIGN_MEM_REF.STORES
222 .Pq Event 05H , Umask 02H
223 Speculative cache-line split Store- address uops
224 dispatched to L1D.
225 .It Li LD_BLOCKS_PARTIAL.ADDRESS_ALIAS
226 .Pq Event 07H , Umask 01H
227 False dependencies in MOB due to partial compare on
228 address.
229 .It Li LD_BLOCKS_PARTIAL.ALL_STALL_BLOCK
230 .Pq Event 07H , Umask 08H
231 The number of times that load operations are temporarily
232 blocked because of older stores, with addresses that are
233 not yet known.
234 A load operation may incur more than one block of this type.
235 .It Li TLB_LOAD_MISSES.MISS_CAUSES_A_WALK
236 .Pq Event 08H , Umask 01H
237 Misses in all TLB levels that cause a page walk of any
238 page size.
239 .It Li TLB_LOAD_MISSES.WALK_COMPLETED
240 .Pq Event 08H , Umask 02H
241 Misses in all TLB levels that caused page walk completed
242 of any size.
243 .It Li DTLB_LOAD_MISSES.WALK_DURATION
244 .Pq Event 08H , Umask 04H
245 Cycle PMH is busy with a walk.
246 .It Li DTLB_LOAD_MISSES.STLB_HIT
247 .Pq Event 08H , Umask 10H
248 Number of cache load STLB hits.
249 No page walk.
250 .It Li INT_MISC.RECOVERY_CYCLES
251 .Pq Event 0DH , Umask 03H
252 Cycles waiting to recover after Machine Clears or EClear.
253 Set Cmask= 1.
254 .It Li INT_MISC.RAT_STALL_CYCLES
255 .Pq Event 0DH , Umask 40H
256 Cycles RAT external stall is sent to IDQ for this thread.
257 .It Li UOPS_ISSUED.ANY
258 .Pq Event 0EH , Umask 01H
259 Increments each cycle the # of Uops issued by the
260 RAT to RS.
261 Set Cmask = 1, Inv = 1, Any= 1to count stalled cycles
262 of this core.
263 .It Li FP_COMP_OPS_EXE.X87
264 .Pq Event 10H , Umask 01H
265 Counts number of X87 uops executed.
266 .It Li FP_COMP_OPS_EXE.SSE_FP_PACKED_DOUBLE
267 .Pq Event 10H , Umask 10H
268 Counts number of SSE* double precision FP packed
269 uops executed.
270 .It Li FP_COMP_OPS_EXE.SSE_FP_SCALAR_SINGLE
271 .Pq Event 10H , Umask 20H
272 Counts number of SSE* single precision FP scalar
273 uops executed.
274 .It Li FP_COMP_OPS_EXE.SSE_PACKED_SINGLE
275 .Pq Event 10H , Umask 40H
276 Counts number of SSE* single precision FP packed
277 uops executed.
278 .It Li FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE
279 .Pq Event 10H , Umask 80H
280 Counts number of SSE* double precision FP scalar
281 uops executed.
282 .It Li SIMD_FP_256.PACKED_SINGLE
283 .Pq Event 11H , Umask 01H
284 Counts 256-bit packed single-precision floating-
285 point instructions.
286 .It Li SIMD_FP_256.PACKED_DOUBLE
287 .Pq Event 11H , Umask 02H
288 Counts 256-bit packed double-precision floating-
289 point instructions.
290 .It Li ARITH.FPU_DIV_ACTIVE
291 .Pq Event 14H , Umask 01H
292 Cycles that the divider is active, includes INT and FP.
293 Set 'edge =1, cmask=1' to count the number of
294 divides.
295 .It Li INSTS_WRITTEN_TO_IQ.INSTS
296 .Pq Event 17H , Umask 01H
297 Counts the number of instructions written into the
298 IQ every cycle.
299 .It Li L2_RQSTS.DEMAND_DATA_RD_HIT
300 .Pq Event 24H , Umask 01H
301 Demand Data Read requests that hit L2 cache.
302 .It Li L2_RQSTS.ALL_DEMAND_DATA_RD
303 .Pq Event 24H , Umask 03H
304 Counts any demand and L1 HW prefetch data load
305 requests to L2.
306 .It Li L2_RQSTS.RFO_HITS
307 .Pq Event 24H , Umask 04H
308 Counts the number of store RFO requests that
309 hit the L2 cache.
310 .It Li L2_RQSTS.RFO_MISS
311 .Pq Event 24H , Umask 08H
312 Counts the number of store RFO requests that
313 miss the L2 cache.
314 .It Li L2_RQSTS.ALL_RFO
315 .Pq Event 24H , Umask 0CH
316 Counts all L2 store RFO requests.
317 .It Li L2_RQSTS.CODE_RD_HIT
318 .Pq Event 24H , Umask 10H
319 Number of instruction fetches that hit the L2
320 cache.
321 .It Li L2_RQSTS.CODE_RD_MISS
322 .Pq Event 24H , Umask 20H
323 Number of instruction fetches that missed the L2
324 cache.
325 .It Li L2_RQSTS.ALL_CODE_RD
326 .Pq Event 24H , Umask 30H
327 Counts all L2 code requests.
328 .It Li L2_RQSTS.PF_HIT
329 .Pq Event 24H , Umask 40H
330 Requests from L2 Hardware prefetcher that hit L2.
331 .It Li L2_RQSTS.PF_MISS
332 .Pq Event 24H , Umask 80H
333 Requests from L2 Hardware prefetcher that missed
334 L2.
335 .It Li L2_RQSTS.ALL_PF
336 .Pq Event 24H , Umask C0H
337 Any requests from L2 Hardware prefetchers.
338 .It Li L2_STORE_LOCK_RQSTS.MISS
339 .Pq Event 27H , Umask 01H
340 ROs that miss cache lines.
341 .It Li L2_STORE_LOCK_RQSTS.HIT_E
342 .Pq Event 27H , Umask 04H
343 RFOs that hit cache lines in E state.
344 .It Li L2_STORE_LOCK_RQSTS.HIT_M
345 .Pq Event 27H , Umask 08H
346 RFOs that hit cache lines in M state.
347 .It Li L2_STORE_LOCK_RQSTS.ALL
348 .Pq Event 27H , Umask 0FH
349 RFOs that access cache lines in any state.
350 .It Li L2_L1D_WB_RQSTS.MISS
351 .Pq Event 28H , Umask 01H
352 Not rejected writebacks from L1D to L2 cache lines
353 that missed L2.
354 .It Li L2_L1D_WB_RQSTS.HIT_S
355 .Pq Event 28H , Umask 02H
356 Not rejected writebacks from L1D to L2 cache lines
357 in S state.
358 .It Li L2_L1D_WB_RQSTS.HIT_E
359 .Pq Event 28H , Umask 04H
360 Not rejected writebacks from L1D to L2 cache lines
361 in E state.
362 .It Li L2_L1D_WB_RQSTS.HIT_M
363 .Pq Event 28H , Umask 08H
364 Not rejected writebacks from L1D to L2 cache lines
365 in M state.
366 .It Li L2_L1D_WB_RQSTS.ALL
367 .Pq Event 28H , Umask 0FH
368 Not rejected writebacks from L1D to L2 cache.
369 .It Li LONGEST_LAT_CACHE.REFERENCE
370 .Pq Event 2EH , Umask 4FH
371 This event counts requests originating from the
372 core that reference
373 a cache line in the last level cache.
374 .It Li LONGEST_LAT_CACHE.MISS
375 .Pq Event 2EH , Umask 41H
376 This event counts each cache miss condition for
377 references to the last level cache.
378 .It Li CPU_CLK_UNHALTED.THREAD_P
379 .Pq Event 3CH , Umask 00H
380 Counts the number of thread cycles while the
381 thread is not in a halt state.
382 The thread enters the halt state when it is running the HLT
383 instruction.
384 The core frequency may change from time to time due to power or thermal throttling.
385 .It Li CPU_CLK_THREAD_UNHALTED.REF_XCLK
386 .Pq Event 3CH , Umask 01H
387 Increments at the frequency of XCLK (100 MHz)
388 when not halted.
389 .It Li L1D_PEND_MISS.PENDING
390 .Pq Event 48H , Umask 01H
391 Increments the number of outstanding L1D misses
392 every cycle.
393 Set Cmaks = 1 and Edge =1 to count occurrences.
394 .It Li DTLB_STORE_MISSES.MISS_CAUSES_A_WALK
395 .Pq Event 49H , Umask 01H
396 Miss in all TLB levels causes an page walk of
397 any page size (4K/2M/4M/1G).
398 .It Li DTLB_STORE_MISSES.WALK_COMPLETED
399 .Pq Event 49H , Umask 02H
400 Miss in all TLB levels causes a page walk that
401 completes of any page size (4K/2M/4M/1G).
402 .It Li DTLB_STORE_MISSES.WALK_DURATION
403 .Pq Event 49H , Umask 04H
404 Cycles PMH is busy with this walk.
405 .It Li DTLB_STORE_MISSES.STLB_HIT
406 .Pq Event 49H , Umask 10H
407 Store operations that miss the first TLB level
408 but hit the second and do not cause page walks.
409 .It Li LOAD_HIT_PRE.SW_PF
410 .Pq Event 4CH , Umask 01H
411 Not SW-prefetch load dispatches that hit fill
412 buffer allocated for S/W prefetch.
413 .It Li LOAD_HIT_PER.HW_PF
414 .Pq Event 4CH , Umask 02H
415 Not SW-prefetch load dispatches that hit fill
416 buffer allocated for H/W prefetch.
417 .It Li HW_PRE_REQ.DL1_MISS
418 .Pq Event 4EH , Umask 02H
419 Hardware Prefetch requests that miss the L1D cache.
420 A request is being counted each time it access the cache
421 & miss it, including if a block is applicable or if hit the Fill
422 Buffer for example.
423 .It Li L1D.REPLACEMENT
424 .Pq Event 51H , Umask 01H
425 Counts the number of lines brought into the
426 L1 data cache.
427 .It Li L1D.ALLOCATED_IN_M
428 .Pq Event 51H , Umask 02H
429 Counts the number of allocations of modified
430 L1D cache lines.
431 .It Li L1D.EVICTION
432 .Pq Event 51H , Umask 04H
433 Counts the number of modified lines evicted
434 from the L1 data cache due to replacement.
435 .It Li L1D.ALL_M_REPLACEMENT
436 .Pq Event 51H , Umask 08H
437 Cache lines in M state evicted out of L1D due
438 to Snoop HitM or dirty line replacement.
439 .It Li PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP
440 .Pq Event 59H , Umask 0CH
441 Increments the number of flags-merge uops in
442 flight each cycle.
443 Set Cmask = 1 to count cycles.
444 .It Li PARTIAL_RAT_STALLS.SLOW_LEA_WINDOW
445 .Pq Event 59H , Umask 0FH
446 Cycles with at least one slow LEA uop allocated.
447 .It Li PARTIAL_RAT_STALLS.MUL_SINGLE_UOP
448 .Pq Event 59H , Umask 40H
449 Number of Multiply packed/scalar single precision
450 uops allocated.
451 .It Li RESOURCE_STALLS2.ALL_FL_EMPTY
452 .Pq Event 5BH , Umask 0CH
453 Cycles stalled due to free list empty.
454 .It Li RESOURCE_STALLS2.ALL_PRF_CONTROL
455 .Pq Event 5BH , Umask 0FH
456 Cycles stalled due to control structures full for
457 physical registers.
458 .It Li RESOURCE_STALLS2.BOB_FULL
459 .Pq Event 5BH , Umask 40H
460 Cycles Allocator is stalled due Branch Order Buffer.
461 .It Li RESOURCE_STALLS2.OOO_RSRC
462 .Pq Event 5BH , Umask 4FH
463 Cycles stalled due to out of order resources full.
464 .It Li CPL_CYCLES.RING0
465 .Pq Event 5CH , Umask 01H
466 Unhalted core cycles when the thread is in ring 0.
467 .It Li CPL_CYCLES.RING123
468 .Pq Event 5CH , Umask 02H
469 Unhalted core cycles when the thread is not in ring
470 0.
471 .It Li RS_EVENTS.EMPTY_CYCLES
472 .Pq Event 5EH , Umask 01H
473 Cycles the RS is empty for the thread.
474 .It Li OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD
475 .Pq Event 60H , Umask 01H
476 Offcore outstanding Demand Data Read
477 transactions in SQ to uncore.
478 Set Cmask=1 to count cycles.
479 .It Li OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO
480 .Pq Event 60H , Umask 04H
481 Offcore outstanding RFO store transactions in SQ to
482 uncore.
483 Set Cmask=1 to count cycles.
484 .It Li OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD
485 .Pq Event 60H , Umask 08H
486 Offcore outstanding cacheable data read
487 transactions in SQ to uncore.
488 Set Cmask=1 to count cycles.
489 .It Li LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION
490 .Pq Event 63H , Umask 01H
491 Cycles in which the L1D and L2 are locked, due to a
492 UC lock or split lock.
493 .It Li LOCK_CYCLES.CACHE_LOCK_DURATION
494 .Pq Event 63H , Umask 02H
495 Cycles in which the L1D is locked.
496 .It Li IDQ.EMPTY
497 .Pq Event 79H , Umask 02H
498 Counts cycles the IDQ is empty.
499 .It Li IDQ.MITE_UOPS
500 .Pq Event 79H , Umask 04H
501 Increment each cycle # of uops delivered to IDQ
502 from MITE path.
503 Set Cmask = 1 to count cycles.
504 .It Li IDQ.DSB_UOPS
505 .Pq Event 79H , Umask 08H
506 Increment each cycle. # of uops delivered to IDQ
507 from DSB path.
508 Set Cmask = 1 to count cycles.
509 .It Li IDQ.MS_DSB_UOPS
510 .Pq Event 79H , Umask 10H
511 Increment each cycle # of uops delivered to IDQ
512 when MS busy by DSB.
513 Set Cmask = 1 to count cycles MS is busy.
514 Set Cmask=1 and Edge =1 to count MS activations.
515 .It Li IDQ.MS_MITE_UOPS
516 .Pq Event 79H , Umask 20H
517 Increment each cycle # of uops delivered to IDQ
518 when MS is busy by MITE.
519 Set Cmask = 1 to count cycles.
520 .It Li IDQ.MS_UOPS
521 .Pq Event 79H , Umask 30H
522 Increment each cycle # of uops delivered to IDQ
523 from MS by either DSB or MITE.
524 Set Cmask = 1 to count cycles.
525 .It Li ICACHE.MISSES
526 .Pq Event 80H , Umask 02H
527 Number of Instruction Cache, Streaming Buffer and
528 Victim Cache Misses.
529 Includes UC accesses.
530 .It Li ITLB_MISSES.MISS_CAUSES_A_WALK
531 .Pq Event 85H , Umask 01H
532 Misses in all ITLB levels that cause page walks.
533 .It Li ITLB_MISSES.WALK_COMPLETED
534 .Pq Event 85H , Umask 02H
535 Misses in all ITLB levels that cause completed page
536 walks.
537 .It Li ITLB_MISSES.WALK_DURATION
538 .Pq Event 85H , Umask 04H
539 Cycle PMH is busy with a walk.
540 .It Li ITLB_MISSES.STLB_HIT
541 .Pq Event 85H , Umask 10H
542 Number of cache load STLB hits.
543 No page walk.
544 .It Li ILD_STALL.LCP
545 .Pq Event 87H , Umask 01H
546 Stalls caused by changing prefix length of the
547 instruction.
548 .It Li ILD_STALL.IQ_FULL
549 .Pq Event 87H , Umask 04H
550 Stall cycles due to IQ is full.
551 .It Li BR_INST_EXEC.NONTAKEN_COND
552 .Pq Event 88H , Umask 41H
553 Count conditional near branch instructions that were executed (but not
554 necessarily retired) and not taken.
555 .It Li BR_INST_EXEC.TAKEN_COND
556 .Pq Event 88H , Umask 81H
557 Count conditional near branch instructions that were executed (but not
558 necessarily retired) and taken.
559 .It Li BR_INST_EXEC.DIRECT_JMP
560 .Pq Event 88H , Umask 82H
561 Count all unconditional near branch instructions excluding calls and
562 indirect branches.
563 .It Li BR_INST_EXEC.INDIRECT_JMP_NON_CALL_RET
564 .Pq Event 88H , Umask 84H
565 Count executed indirect near branch instructions that are not calls nor
566 returns.
567 .It Li BR_INST_EXEC.RETURN_NEAR
568 .Pq Event 88H , Umask 88H
569 Count indirect near branches that have a return mnemonic.
570 .It Li BR_INST_EXEC.DIRECT_NEAR_CALL
571 .Pq Event 88H , Umask 90H
572 Count unconditional near call branch instructions, excluding non call
573 branch, executed.
574 .It Li BR_INST_EXEC.INDIRECT_NEAR_CALL
575 .Pq Event 88H , Umask A0H
576 Count indirect near calls, including both register and memory indirect,
577 executed.
578 .It Li BR_INST_EXEC.ALL_BRANCHES
579 .Pq Event 88H , Umask FFH
580 Counts all near executed branches (not necessarily retired).
581 .It Li BR_MISP_EXEC.NONTAKEN_COND
582 .Pq Event 89H , Umask 41H
583 Count conditional near branch instructions mispredicted as nontaken.
584 .It Li BR_MISP_EXEC.TAKEN_COND
585 .Pq Event 89H , Umask 81H
586 Count conditional near branch instructions mispredicted as taken.
587 .It Li BR_MISP_EXEC.INDIRECT_JMP_NON_CALL_RET
588 .Pq Event 89H , Umask 84H
589 Count mispredicted indirect near branch instructions that are not calls
590 nor returns.
591 .It Li BR_MISP_EXEC.RETURN_NEAR
592 .Pq Event 89H , Umask 88H
593 Count mispredicted indirect near branches that have a return mnemonic.
594 .It Li BR_MISP_EXEC.DIRECT_NEAR_CALL
595 .Pq Event 89H , Umask 90H
596 Count mispredicted unconditional near call branch instructions, excluding
597 non call branch, executed.
598 .It Li BR_MISP_EXEC.INDIRECT_NEAR_CALL
599 .Pq Event 89H , Umask A0H
600 Count mispredicted indirect near calls, including both register and memory
601 indirect, executed.
602 .It Li BR_MISP_EXEC.ALL_BRANCHES
603 .Pq Event 89H , Umask FFH
604 Counts all mispredicted near executed branches (not necessarily retired).
605 .It Li IDQ_UOPS_NOT_DELIVERED.CORE
606 .Pq Event 9CH , Umask 01H
607 Count number of non-delivered uops to RAT per
608 thread.
609 .It Li UOPS_DISPATCHED_PORT.PORT_0
610 .Pq Event A1H , Umask 01H
611 Cycles which a Uop is dispatched on port 0.
612 .It Li UOPS_DISPATCHED_PORT.PORT_1
613 .Pq Event A1H , Umask 02H
614 Cycles which a Uop is dispatched on port 1.
615 .It Li UOPS_DISPATCHED_PORT.PORT_2_LD
616 .Pq Event A1H , Umask 04H
617 Cycles which a load uop is dispatched on port 2.
618 .It Li UOPS_DISPATCHED_PORT.PORT_2_STA
619 .Pq Event A1H , Umask 08H
620 Cycles which a store address uop is dispatched on
621 port 2.
622 .It Li UOPS_DISPATCHED_PORT.PORT_2
623 .Pq Event A1H , Umask 0CH
624 Cycles which a Uop is dispatched on port 2.
625 .It Li UOPS_DISPATCHED_PORT.PORT_3_LD
626 .Pq Event A1H , Umask 10H
627 Cycles which a load uop is dispatched on port 3.
628 .It Li UOPS_DISPATCHED_PORT.PORT_3_STA
629 .Pq Event A1H , Umask 20H
630 Cycles which a store address uop is dispatched on
631 port 3.
632 .It Li UOPS_DISPATCHED_PORT.PORT_3
633 .Pq Event A1H , Umask 30H
634 Cycles which a Uop is dispatched on port 3.
635 .It Li UOPS_DISPATCHED_PORT.PORT_4
636 .Pq Event A1H , Umask 40H
637 Cycles which a Uop is dispatched on port 4.
638 .It Li UOPS_DISPATCHED_PORT.PORT_5
639 .Pq Event A1H , Umask 80H
640 Cycles which a Uop is dispatched on port 5.
641 .It Li RESOURCE_STALLS.ANY
642 .Pq Event A2H , Umask 01H
643 Cycles Allocation is stalled due to Resource Related
644 reason.
645 .It Li RESOURCE_STALLS.LB
646 .Pq Event A2H , Umask 01H
647 Counts the cycles of stall due to lack of load buffers.
648 .It Li RESOURCE_STALLS.RS
649 .Pq Event A2H , Umask 04H
650 Cycles stalled due to no eligible RS entry available.
651 .It Li RESOURCE_STALLS.SB
652 .Pq Event A2H , Umask 08H
653 Cycles stalled due to no store buffers available.
654 (not including draining form sync).
655 .It Li RESOURCE_STALLS.ROB
656 .Pq Event A2H , Umask 10H
657 Cycles stalled due to re-order buffer full.
658 .It Li RESOURCE_STALLS.FCSW
659 .Pq Event A2H , Umask 20H
660 Cycles stalled due to writing the FPU control word.
661 .It Li RESOURCE_STALLS.MXCSR
662 .Pq Event A2H , Umask 40H
663 Cycles stalled due to the MXCSR register rename
664 occurring to close to a previous MXCSR rename.
665 .It Li RESOURCE_STALLS.OTHER
666 .Pq Event A2H , Umask 80H
667 Cycles stalled while execution was stalled due to
668 other resource issues.
669 .It Li CYCLE_ACTIVITY.CYCLES_L2_PENDING
670 .Pq Event A3H , Umask 01H
671 Cycles with pending L2 miss loads.
672 Set AnyThread to count per core.
673 .It Li CYCLE_ACTIVITY.CYCLES_L1D_PENDING
674 .Pq Event A3H , Umask 02H
675 Cycles with pending L1 cache miss loads.
676 Set AnyThread to count per core.
677 .It Li CYCLE_ACTIVITY.CYCLES_NO_DISPATCH
678 .Pq Event A3H , Umask 04H
679 Cycles of dispatch stalls.
680 Set AnyThread to count per core.
681 .It Li DSB2MITE_SWITCHES.COUNT
682 .Pq Event ABH , Umask 01H
683 Number of DSB to MITE switches.
684 .It Li DSB2MITE_SWITCHES.PENALTY_CYCLES
685 .Pq Event ABH , Umask 02H
686 Cycles DSB to MITE switches caused delay.
687 .It Li DSB_FILL.OTHER_CANCEL
688 .Pq Event ACH , Umask 02H
689 Cases of cancelling valid DSB fill not because of
690 exceeding way limit.
691 .It Li DSB_FILL.EXCEED_DSB_LINES
692 .Pq Event ACH , Umask 08H
693 DSB Fill encountered > 3 DSB lines.
694 .It Li DSB_FILL.ALL_CANCEL
695 .Pq Event ACH , Umask 0AH
696 Cases of cancelling valid Decode Stream Buffer
697 (DSB) fill not because of exceeding way limit.
698 .It Li ITLB.ITLB_FLUSH
699 .Pq Event AEH , Umask 01H
700 Counts the number of ITLB flushes, includes
701 4k/2M/4M pages.
702 .It Li OFFCORE_REQUESTS.DEMAND_DATA_RD
703 .Pq Event B0H , Umask 01H
704 Demand data read requests sent to uncore.
705 .It Li OFFCORE_REQUESTS.DEMAND_RFO
706 .Pq Event B0H , Umask 04H
707 Demand RFO read requests sent to uncore, including
708 regular RFOs, locks, ItoM.
709 .It Li OFFCORE_REQUESTS.ALL_DATA_RD
710 .Pq Event B0H , Umask 08H
711 Data read requests sent to uncore (demand and
712 prefetch).
713 .It Li UOPS_DISPATCHED.THREAD
714 .Pq Event B1H , Umask 01H
715 Counts total number of uops to be dispatched per-
716 thread each cycle.
717 Set Cmask = 1, INV =1 to count stall cycles.
718 .It Li UOPS_DISPATCHED.CORE
719 .Pq Event B1H , Umask 02H
720 Counts total number of uops to be dispatched per-
721 core each cycle.
722 .It Li OFFCORE_REQUESTS_BUFFER.SQ_FULL
723 .Pq Event B2H , Umask 01H
724 Offcore requests buffer cannot take more entries
725 for this thread core.
726 .It Li AGU_BYPASS_CANCEL.COUNT
727 .Pq Event B6H , Umask 01H
728 Counts executed load operations with all the
729 following traits: 1. addressing of the format [base +
730 offset], 2. the offset is between 1 and 2047, 3. the
731 address specified in the base register is in one page
732 and the address [base+offset] is in another page.
733 .It Li OFF_CORE_RESPONSE_0
734 .Pq Event B7H , Umask 01H
735 (Event B7H, Umask 01H) Off-core Response Performance
736 Monitoring; PMC0 only.
737 Requires programming MSR 01A6H
738 .It Li OFF_CORE_RESPONSE_1
739 .Pq Event BBH , Umask 01H
740 (Event BBH, Umask 01H) Off-core Response Performance
741 Monitoring; PMC3 only.
742 Requires programming MSR 01A7H
743 .It Li TLB_FLUSH.DTLB_THREAD
744 .Pq Event BDH , Umask 01H
745 DTLB flush attempts of the thread-specific entries.
746 .It Li TLB_FLUSH.STLB_ANY
747 .Pq Event BDH , Umask 20H
748 Count number of STLB flush attempts.
749 .It Li L1D_BLOCKS.BANK_CONFLICT_CYCLES
750 .Pq Event BFH , Umask 05H
751 Cycles when dispatched loads are cancelled due to
752 L1D bank conflicts with other load ports.
753 .It Li INST_RETIRED.ANY_P
754 .Pq Event C0H , Umask 00H
755 Number of instructions at retirement.
756 .It Li INST_RETIRED.ALL
757 .Pq Event C0H , Umask 01H
758 Precise instruction retired event with HW to reduce
759 effect of PEBS shadow in IP distribution.
760 .It Li OTHER_ASSISTS.ITLB_MISS_RETIRED
761 .Pq Event C1H , Umask 02H
762 Instructions that experienced an ITLB miss.
763 .It Li OTHER_ASSISTS.AVX_STORE
764 .Pq Event C1H , Umask 08H
765 Number of assists associated with 256-bit AVX
766 store operations.
767 .It Li OTHER_ASSISTS.AVX_TO_SSE
768 .Pq Event C1H , Umask 10H
769 Number of transitions from AVX-256 to legacy SSE
770 when penalty applicable.
771 .It Li OTHER_ASSISTS.SSE_TO_AVX
772 .Pq Event C1H , Umask 20H
773 Number of transitions from SSE to AVX-256 when
774 penalty applicable.
775 .It Li UOPS_RETIRED.ALL
776 .Pq Event C2H , Umask 01H
777 Counts the number of micro-ops retired, Use
778 cmask=1 and invert to count active cycles or stalled
779 cycles.
780 .It Li UOPS_RETIRED.RETIRE_SLOTS
781 .Pq Event C2H , Umask 02H
782 Counts the number of retirement slots used each
783 cycle.
784 .It Li MACHINE_CLEARS.MEMORY_ORDERING
785 .Pq Event C3H , Umask 02H
786 Counts the number of machine clears due to
787 memory order conflicts.
788 .It Li MACHINE_CLEARS.SMC
789 .Pq Event C3H , Umask 04H
790 Counts the number of times that a program writes
791 to a code section.
792 .It Li MACHINE_CLEARS.MASKMOV
793 .Pq Event C3H , Umask 20H
794 Counts the number of executed AVX masked load
795 operations that refer to an illegal address range
796 with the mask bits set to 0.
797 .It Li BR_INST_RETIRED.ALL_BRANCH
798 .Pq Event C4H , Umask 00H
799 Branch instructions at retirement.
800 .It Li BR_INST_RETIRED.CONDITIONAL
801 .Pq Event C4H , Umask 01H
802 Counts the number of conditional branch
803 instructions retired.
804 .It Li BR_INST_RETIRED.NEAR_CALL
805 .Pq Event C4H , Umask 02H
806 Direct and indirect near call instructions retired.
807 .It Li BR_INST_RETIRED.ALL_BRANCHES
808 .Pq Event C4H , Umask 04H
809 Counts the number of branch instructions retired.
810 .It Li BR_INST_RETIRED.NEAR_RETURN
811 .Pq Event C4H , Umask 08H
812 Counts the number of near return instructions
813 retired.
814 .It Li BR_INST_RETIRED.NOT_TAKEN
815 .Pq Event C4H , Umask 10H
816 Counts the number of not taken branch instructions
817 retired.
818 .It Li BR_INST_RETIRED.NEAR_TAKEN
819 .Pq Event C4H , Umask 20H
820 Number of near taken branches retired.
821 .It Li BR_INST_RETIRED.FAR_BRANCH
822 .Pq Event C4H , Umask 40H
823 Number of far branches retired.
824 .It Li BR_MISP_RETIRED.ALL_BRANCHES
825 .Pq Event C5H , Umask 00H
826 Mispredicted branch instructions at retirement.
827 .It Li BR_MISP_RETIRED.CONDITIONAL
828 .Pq Event C5H , Umask 01H
829 Mispredicted conditional branch instructions retired.
830 .It Li BR_MISP_RETIRED.NEAR_CALL
831 .Pq Event C5H , Umask 02H
832 Direct and indirect mispredicted near call
833 instructions retired.
834 .It Li BR_MISP_RETIRED.ALL_BRANCHES
835 .Pq Event C5H , Umask 04H
836 Mispredicted macro branch instructions retired.
837 .It Li BR_MISP_RETIRED.NOT_TAKEN
838 .Pq Event C5H , Umask 10H
839 Mispredicted not taken branch instructions retired.
840 .It Li BR_MISP_RETIRED.TAKEN
841 .Pq Event C5H , Umask 20H
842 Mispredicted taken branch instructions retired.
843 .It Li FP_ASSIST.X87_OUTPUT
844 .Pq Event CAH , Umask 02H
845 Number of X87 assists due to output value.
846 .It Li FP_ASSIST.X87_INPUT
847 .Pq Event CAH , Umask 04H
848 Number of X87 assists due to input value.
849 .It Li FP_ASSIST.SIMD_OUTPUT
850 .Pq Event CAH , Umask 08H
851  Number of SIMD FP assists due to output values.
852 .It Li FP_ASSIST.SIMD_INPUT
853 .Pq Event CAH , Umask 10H
854 Number of SIMD FP assists due to input values.
855 .It Li FP_ASSIST.ANY 1EH
856 .Pq Event CAH , Umask
857 Cycles with any input/output SSE* or FP assists.
858 .It Li ROB_MISC_EVENTS.LBR_INSERTS
859 .Pq Event CCH , Umask 20H
860 Count cases of saving new LBR records by
861 hardware.
862 .It Li MEM_TRANS_RETIRED.LOAD_LATENCY
863 .Pq Event CDH , Umask 01H
864 Sample loads with specified latency threshold.
865 PMC3 only.
866 .It Li MEM_TRANS_RETIRED.PRECISE_STORE
867 .Pq Event CDH , Umask 02H
868 Sample stores and collect precise store operation
869 via PEBS record.
870 PMC3 only.
871 .It Li MEM_UOP_RETIRED.LOADS
872 .Pq Event D0H , Umask 10H
873 Qualify retired memory uops that are loads.
874 Combine with umask 10H, 20H, 40H, 80H.
875 .It Li MEM_UOP_RETIRED.STORES
876 .Pq Event D0H , Umask 02H
877 Qualify retired memory uops that are stores.
878 Combine with umask 10H, 20H, 40H, 80H.
879 .It Li MEM_UOP_RETIRED.STLB_MISS
880 .Pq Event D0H , Umask
881 Qualify retired memory uops with STLB miss.
882 Must combine with umask 01H, 02H, to produce counts.
883 .It Li MEM_UOP_RETIRED.LOCK
884 .Pq Event D0H , Umask
885 Qualify retired memory uops with lock.
886 Must combine with umask 01H, 02H, to produce counts.
887 .It Li MEM_UOP_RETIRED.SPLIT
888 .Pq Event D0H , Umask
889 Qualify retired memory uops with line split.
890 Must combine with umask 01H, 02H, to produce counts.
891 .It Li MEM_UOP_RETIRED_ALL
892 .Pq Event D0H , Umask
893 Qualify any retired memory uops.
894 Must combine with umask 01H, 02H, to produce counts.
895 .It Li MEM_LOAD_UOPS_RETIRED.L1_HIT
896 .Pq Event D1H , Umask 01H
897 Retired load uops with L1 cache hits as data
898 sources.
899 .It Li MEM_LOAD_UOPS_RETIRED.L2_HIT
900 .Pq Event D1H , Umask 02H
901 Retired load uops with L2 cache hits as data
902 sources.
903 .It Li MEM_LOAD_UOPS_RETIRED.LLC_HIT
904 .Pq Event D1H , Umask 04H
905 Retired load uops which data sources were data hits
906 in LLC without snoops required.
907 .It Li MEM_LOAD_UOPS_RETIRED.LLC_MISS
908 .Pq Event D1H , Umask 20H
909 Retired load uops which data sources were data
910 missed LLC (excluding unknown data source).
911 .It Li MEM_LOAD_UOPS_RETIRED.HIT_LFB
912 .Pq Event D1H , Umask 40H
913 Retired load uops which data sources were load
914 uops missed L1 but hit FB due to preceding miss to
915 the same cache line with data not ready.
916 .It Li MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS
917 .Pq Event D4H , Umask 02H
918 Retired load uops with unknown information as data
919 source in cache serviced the load.
920 .It Li BACLEARS.ANY
921 .Pq Event E6H , Umask 01H
922 Counts the number of times the front end is re-
923 steered, mainly when the BPU cannot provide a
924 correct prediction and this is corrected by other
925 branch handling mechanisms at the front end.
926 .It Li L2_TRANS.DEMAND_DATA_RD
927 .Pq Event F0H , Umask 01H
928 Demand Data Read requests that access L2 cache.
929 .It Li L2_TRANS.RFO
930 .Pq Event F0H , Umask 02H
931 RFO requests that access L2 cache.
932 .It Li L2_TRANS.CODE_RD
933 .Pq Event F0H , Umask 04H
934 L2 cache accesses when fetching instructions.
935 .It Li L2_TRANS.ALL_PF
936 .Pq Event F0H , Umask 08H
937 L2 or LLC HW prefetches that access L2 cache.
938 .It Li L2_TRANS.L1D_WB
939 .Pq Event F0H , Umask 10H
940 L1D writebacks that access L2 cache.
941 .It Li L2_TRANS.L2_FILL
942 .Pq Event F0H , Umask 20H
943 L2 fill requests that access L2 cache.
944 .It Li L2_TRANS.L2_WB
945 .Pq Event F0H , Umask 40H
946 L2 writebacks that access L2 cache.
947 .It Li L2_TRANS.ALL_REQUESTS
948 .Pq Event F0H , Umask 80H
949 Transactions accessing L2 pipe.
950 .It Li L2_LINES_IN.I
951 .Pq Event F1H , Umask 01H
952 L2 cache lines in I state filling L2.
953 .It Li L2_LINES_IN.S
954 .Pq Event F1H , Umask 02H
955 L2 cache lines in S state filling L2.
956 .It Li L2_LINES_IN.E
957 .Pq Event F1H , Umask 04H
958 L2 cache lines in E state filling L2.
959 .It Li L2_LINES-IN.ALL
960 .Pq Event F1H , Umask 07H
961 L2 cache lines filling L2.
962 .It Li L2_LINES_OUT.DEMAND_CLEAN
963 .Pq Event F2H , Umask 01H
964 Clean L2 cache lines evicted by demand.
965 .It Li L2_LINES_OUT.DEMAND_DIRTY
966 .Pq Event F2H , Umask 02H
967 Dirty L2 cache lines evicted by demand.
968 .It Li L2_LINES_OUT.PF_CLEAN
969 .Pq Event F2H , Umask 04H
970 Clean L2 cache lines evicted by L2 prefetch.
971 .It Li L2_LINES_OUT.PF_DIRTY
972 .Pq Event F2H , Umask 08H
973 Dirty L2 cache lines evicted by L2 prefetch.
974 .It Li L2_LINES_OUT.DIRTY_ALL
975 .Pq Event F2H , Umask 0AH
976 Dirty L2 cache lines filling the L2.
977 .It Li SQ_MISC.SPLIT_LOCK
978 .Pq Event F4H , Umask 10H
979 Split locks in SQ.
980 .El
981 .Sh SEE ALSO
982 .Xr pmc 3 ,
983 .Xr pmc.atom 3 ,
984 .Xr pmc.core 3 ,
985 .Xr pmc.corei7 3 ,
986 .Xr pmc.corei7uc 3 ,
987 .Xr pmc.haswelluc 3 ,
988 .Xr pmc.iaf 3 ,
989 .Xr pmc.ivybridge 3 ,
990 .Xr pmc.ivybridgexeon 3 ,
991 .Xr pmc.k7 3 ,
992 .Xr pmc.k8 3 ,
993 .Xr pmc.p4 3 ,
994 .Xr pmc.p5 3 ,
995 .Xr pmc.p6 3 ,
996 .Xr pmc.sandybridge 3 ,
997 .Xr pmc.sandybridgeuc 3 ,
998 .Xr pmc.soft 3 ,
999 .Xr pmc.tsc 3 ,
1000 .Xr pmc.ucf 3 ,
1001 .Xr pmc.westmere 3 ,
1002 .Xr pmc.westmereuc 3 ,
1003 .Xr pmc_cpuinfo 3 ,
1004 .Xr pmclog 3 ,
1005 .Xr hwpmc 4
1006 .Sh HISTORY
1007 The
1008 .Nm pmc
1009 library first appeared in
1010 .Fx 6.0 .
1011 .Sh AUTHORS
1012 .An -nosplit
1013 The
1014 .Lb libpmc
1015 library was written by
1016 .An Joseph Koshy Aq Mt jkoshy@FreeBSD.org .
1017 The support for the Sandy Bridge Xeon
1018 microarchitecture was written by
1019 .An Hiren Panchasara Aq Mt hiren.panchasara@gmail.com .