xref: /NextBSD/lib/libpmc/pmc.k8.3 (revision e5d2f8730c92c4abb6de986ec4e1f39a242b9868)
1.\" Copyright (c) 2003-2008 Joseph Koshy.  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 October 4, 2008
27.Dt PMC.K8 3
28.Os
29.Sh NAME
30.Nm pmc.k8
31.Nd measurement events for
32.Tn AMD
33.Tn Athlon 64
34(K8 family) CPUs
35.Sh LIBRARY
36.Lb libpmc
37.Sh SYNOPSIS
38.In pmc.h
39.Sh DESCRIPTION
40AMD K8 PMCs are present in the
41.Tn "AMD Athlon64"
42and
43.Tn "AMD Opteron"
44series of CPUs.
45They are documented in the
46.Rs
47.%B "BIOS and Kernel Developer's Guide for the AMD Athlon(tm) 64 and AMD Opteron Processors"
48.%N "Publication No. 26094"
49.%D "April 2004"
50.%Q "Advanced Micro Devices, Inc."
51.Re
52.Ss PMC Features
53AMD K8 PMCs are 48 bits wide.
54Each CPU contains 4 PMCs with the following capabilities:
55.Bl -column "PMC_CAP_INTERRUPT" "Support"
56.It Em Capability Ta Em Support
57.It PMC_CAP_CASCADE Ta \&No
58.It PMC_CAP_EDGE Ta Yes
59.It PMC_CAP_INTERRUPT Ta Yes
60.It PMC_CAP_INVERT Ta Yes
61.It PMC_CAP_READ Ta Yes
62.It PMC_CAP_PRECISE Ta \&No
63.It PMC_CAP_SYSTEM Ta Yes
64.It PMC_CAP_TAGGING Ta \&No
65.It PMC_CAP_THRESHOLD Ta Yes
66.It PMC_CAP_USER Ta Yes
67.It PMC_CAP_WRITE Ta Yes
68.El
69.Ss Event Qualifiers
70Event specifiers for AMD K8 PMCs can have the following optional
71qualifiers:
72.Bl -tag -width indent
73.It Li count= Ns Ar value
74Configure the counter to increment only if the number of configured
75events measured in a cycle is greater than or equal to
76.Ar value .
77.It Li edge
78Configure the counter to only count negated-to-asserted transitions
79of the conditions expressed by the other fields.
80In other words, the counter will increment only once whenever a given
81condition becomes true, irrespective of the number of clocks during
82which the condition remains true.
83.It Li inv
84Invert the sense of comparison when the
85.Dq Li count
86qualifier is present, making the counter to increment when the
87number of events per cycle is less than the value specified by
88the
89.Dq Li count
90qualifier.
91.It Li mask= Ns Ar qualifier
92Many event specifiers for AMD K8 PMCs need to be additionally
93qualified using a mask qualifier.
94These additional qualifiers are event-specific and are documented
95along with their associated event specifiers below.
96.It Li os
97Configure the PMC to count events happening at privilege level 0.
98.It Li usr
99Configure the PMC to count events occurring at privilege levels 1, 2
100or 3.
101.El
102.Pp
103If neither of the
104.Dq Li os
105or
106.Dq Li usr
107qualifiers were specified, the default is to enable both.
108.Ss AMD K8 Event Specifiers
109The event specifiers supported on AMD K8 PMCs are:
110.Bl -tag -width indent
111.It Li k8-bu-cpu-clk-unhalted
112.Pq Event 76H
113Count the number of clock cycles when the CPU is not in the HLT or
114STPCLK states.
115.It Li k8-bu-fill-request-l2-miss Op Li ,mask= Ns Ar qualifier
116.Pq Event 7EH
117Count fill requests that missed in the L2 cache.
118This event may be further qualified using
119.Ar qualifier ,
120which is a
121.Ql +
122separated set of the following keywords:
123.Pp
124.Bl -tag -width indent -compact
125.It Li dc-fill
126Count data cache fill requests.
127.It Li ic-fill
128Count instruction cache fill requests.
129.It Li tlb-reload
130Count TLB reloads.
131.El
132.Pp
133The default is to count all types of requests.
134.It Li k8-bu-fill-into-l2 Op Li ,mask= Ns Ar qualifier
135.Pq Event 7FH
136The number of lines written to and from the L2 cache.
137The event may be further qualified by using
138.Ar qualifier ,
139which is a
140.Ql +
141separated set of the following keywords:
142.Pp
143.Bl -tag -width indent -compact
144.It Li dirty-l2-victim
145Count lines written into L2 cache due to victim writebacks from the
146Icache or Dcache, TLB page table walks or hardware data prefetches.
147.It Li victim-from-l2
148Count writebacks of dirty lines from L2 to the system.
149.El
150.It Li k8-bu-internal-l2-request Op Li ,mask= Ns Ar qualifier
151.Pq Event 7DH
152Count internally generated requests to the L2 cache.
153This event may be further qualified using
154.Ar qualifier ,
155which is a
156.Ql +
157separated set of the following keywords:
158.Pp
159.Bl -tag -width indent -compact
160.It Li cancelled
161Count cancelled requests.
162.It Li dc-fill
163Count data cache fill requests.
164.It Li ic-fill
165Count instruction cache fill requests.
166.It Li tag-snoop
167Count tag snoop requests.
168.It Li tlb-reload
169Count TLB reloads.
170.El
171.Pp
172The default is to count all types of requests.
173.It Li k8-dc-access
174.Pq Event 40H
175Count data cache accesses including microcode scratch pad accesses.
176.It Li k8-dc-copyback Op Li ,mask= Ns Ar qualifier
177.Pq Event 44H
178Count data cache copyback operations.
179This event may be further qualified using
180.Ar qualifier ,
181which is a
182.Ql +
183separated set of the following keywords:
184.Pp
185.Bl -tag -width indent -compact
186.It Li exclusive
187Count operations for lines in the
188.Dq exclusive
189state.
190.It Li invalid
191Count operations for lines in the
192.Dq invalid
193state.
194.It Li modified
195Count operations for lines in the
196.Dq modified
197state.
198.It Li owner
199Count operations for lines in the
200.Dq owner
201state.
202.It Li shared
203Count operations for lines in the
204.Dq shared
205state.
206.El
207.Pp
208The default is to count operations for lines in all the
209above states.
210.It Li k8-dc-dcache-accesses-by-locks Op Li ,mask= Ns Ar qualifier
211.Pq Event 4CH
212Count data cache accesses by lock instructions.
213This event is only available on processors of revision C or later
214vintage.
215This event may be further qualified using
216.Ar qualifier ,
217which is a
218.Ql +
219separated set of the following keywords:
220.Pp
221.Bl -tag -width indent -compact
222.It Li accesses
223Count data cache accesses by lock instructions.
224.It Li misses
225Count data cache misses by lock instructions.
226.El
227.Pp
228The default is to count all accesses.
229.It Li k8-dc-dispatched-prefetch-instructions Op Li ,mask= Ns Ar qualifier
230.Pq Event 4BH
231Count the number of dispatched prefetch instructions.
232This event may be further qualified using
233.Ar qualifier ,
234which is a
235.Ql +
236separated set of the following keywords:
237.Pp
238.Bl -tag -width indent -compact
239.It Li load
240Count load operations.
241.It Li nta
242Count non-temporal operations.
243.It Li store
244Count store operations.
245.El
246.Pp
247The default is to count all operations.
248.It Li k8-dc-l1-dtlb-miss-and-l2-dtlb-hit
249.Pq Event 45H
250Count L1 DTLB misses that are L2 DTLB hits.
251.It Li k8-dc-l1-dtlb-miss-and-l2-dtlb-miss
252.Pq Event 46H
253Count L1 DTLB misses that are also misses in the L2 DTLB.
254.It Li k8-dc-microarchitectural-early-cancel-of-an-access
255.Pq Event 49H
256Count microarchitectural early cancels of data cache accesses.
257.It Li k8-dc-microarchitectural-late-cancel-of-an-access
258.Pq Event 48H
259Count microarchitectural late cancels of data cache accesses.
260.It Li k8-dc-misaligned-data-reference
261.Pq Event 47H
262Count misaligned data references.
263.It Li k8-dc-miss
264.Pq Event 41H
265Count data cache misses.
266.It Li k8-dc-one-bit-ecc-error Op Li ,mask= Ns Ar qualifier
267.Pq Event 4AH
268Count one bit ECC errors found by the scrubber.
269This event may be further qualified using
270.Ar qualifier ,
271which is a
272.Ql +
273separated set of the following keywords:
274.Pp
275.Bl -tag -width indent -compact
276.It Li scrubber
277Count scrubber detected errors.
278.It Li piggyback
279Count piggyback scrubber errors.
280.El
281.Pp
282The default is to count both kinds of errors.
283.It Li k8-dc-refill-from-l2 Op Li ,mask= Ns Ar qualifier
284.Pq Event 42H
285Count data cache refills from L2 cache.
286This event may be further qualified using
287.Ar qualifier ,
288which is a
289.Ql +
290separated set of the following keywords:
291.Pp
292.Bl -tag -width indent -compact
293.It Li exclusive
294Count operations for lines in the
295.Dq exclusive
296state.
297.It Li invalid
298Count operations for lines in the
299.Dq invalid
300state.
301.It Li modified
302Count operations for lines in the
303.Dq modified
304state.
305.It Li owner
306Count operations for lines in the
307.Dq owner
308state.
309.It Li shared
310Count operations for lines in the
311.Dq shared
312state.
313.El
314.Pp
315The default is to count operations for lines in all the
316above states.
317.It Li k8-dc-refill-from-system Op Li ,mask= Ns Ar qualifier
318.Pq Event 43H
319Count data cache refills from system memory.
320This event may be further qualified using
321.Ar qualifier ,
322which is a
323.Ql +
324separated set of the following keywords:
325.Pp
326.Bl -tag -width indent -compact
327.It Li exclusive
328Count operations for lines in the
329.Dq exclusive
330state.
331.It Li invalid
332Count operations for lines in the
333.Dq invalid
334state.
335.It Li modified
336Count operations for lines in the
337.Dq modified
338state.
339.It Li owner
340Count operations for lines in the
341.Dq owner
342state.
343.It Li shared
344Count operations for lines in the
345.Dq shared
346state.
347.El
348.Pp
349The default is to count operations for lines in all the
350above states.
351.It Li k8-fp-cycles-with-no-fpu-ops-retired
352.Pq Event 01H
353Count cycles when no FPU ops were retired.
354This event is supported in revision B and later CPUs.
355.It Li k8-fp-dispatched-fpu-fast-flag-ops
356.Pq Event 02H
357Count dispatched FPU ops that use the fast flag interface.
358This event is supported in revision B and later CPUs.
359.It Li k8-fp-dispatched-fpu-ops Op Li ,mask= Ns Ar qualifier
360.Pq Event 00H
361Count the number of dispatched FPU ops.
362This event is supported in revision B and later CPUs.
363This event may be further qualified using
364.Ar qualifier ,
365which is a
366.Ql +
367separated set of the following keywords:
368.Pp
369.Bl -tag -width indent -compact
370.It Li add-pipe-excluding-junk-ops
371Count add pipe ops excluding junk ops.
372.It Li add-pipe-junk-ops
373Count junk ops in the add pipe.
374.It Li multiply-pipe-excluding-junk-ops
375Count multiply pipe ops excluding junk ops.
376.It Li multiply-pipe-junk-ops
377Count junk ops in the multiply pipe.
378.It Li store-pipe-excluding-junk-ops
379Count store pipe ops excluding junk ops
380.It Li store-pipe-junk-ops
381Count junk ops in the store pipe.
382.El
383.Pp
384The default is to count all types of ops.
385.It Li k8-fr-decoder-empty
386.Pq Event D0H
387Count cycles when there was nothing to dispatch (i.e., the decoder
388was empty).
389.It Li k8-fr-dispatch-stall-for-segment-load
390.Pq Event D4H
391Count dispatch stalls for segment loads.
392.It Li k8-fr-dispatch-stall-for-serialization
393.Pq Event D3H
394Count dispatch stalls for serialization.
395.It Li k8-fr-dispatch-stall-from-branch-abort-to-retire
396.Pq Event D2H
397Count dispatch stalls from branch abort to retiral.
398.It Li k8-fr-dispatch-stall-when-fpu-is-full
399.Pq Event D7H
400Count dispatch stalls when the FPU is full.
401.It Li k8-fr-dispatch-stall-when-ls-is-full
402.Pq Event D8H
403Count dispatch stalls when the load/store unit is full.
404.It Li k8-fr-dispatch-stall-when-reorder-buffer-is-full
405.Pq Event D5H
406Count dispatch stalls when the reorder buffer is full.
407.It Li k8-fr-dispatch-stall-when-reservation-stations-are-full
408.Pq Event D6H
409Count dispatch stalls when reservation stations are full.
410.It Li k8-fr-dispatch-stall-when-waiting-far-xfer-or-resync-branch-pending
411.Pq Event DAH
412Count dispatch stalls when a far control transfer or a resync branch
413is pending.
414.It Li k8-fr-dispatch-stall-when-waiting-for-all-to-be-quiet
415.Pq Event D9H
416Count dispatch stalls when waiting for all to be quiet.
417.\" XXX What does "waiting for all to be quiet" mean?
418.It Li k8-fr-dispatch-stalls
419.Pq Event D1H
420Count all dispatch stalls.
421.It Li k8-fr-fpu-exceptions Op Li ,mask= Ns Ar qualifier
422.Pq Event DBH
423Count FPU exceptions.
424This event is supported in revision B and later CPUs.
425This event may be further qualified using
426.Ar qualifier ,
427which is a
428.Ql +
429separated set of the following keywords:
430.Pp
431.Bl -tag -width indent -compact
432.It Li sse-and-x87-microtraps
433Count SSE and x87 microtraps.
434.It Li sse-reclass-microfaults
435Count SSE reclass microfaults
436.It Li sse-retype-microfaults
437Count SSE retype microfaults
438.It Li x87-reclass-microfaults
439Count x87 reclass microfaults.
440.El
441.Pp
442The default is to count all types of exceptions.
443.It Li k8-fr-interrupts-masked-cycles
444.Pq Event CDH
445Count cycles when interrupts were masked (by CPU RFLAGS field IF was zero).
446.It Li k8-fr-interrupts-masked-while-pending-cycles
447.Pq Event CEH
448Count cycles while interrupts were masked while pending (i.e., cycles
449when INTR was asserted while CPU RFLAGS field IF was zero).
450.It Li k8-fr-number-of-breakpoints-for-dr0
451.Pq Event DCH
452Count the number of breakpoints for DR0.
453.It Li k8-fr-number-of-breakpoints-for-dr1
454.Pq Event DDH
455Count the number of breakpoints for DR1.
456.It Li k8-fr-number-of-breakpoints-for-dr2
457.Pq Event DEH
458Count the number of breakpoints for DR2.
459.It Li k8-fr-number-of-breakpoints-for-dr3
460.Pq Event DFH
461Count the number of breakpoints for DR3.
462.It Li k8-fr-retired-branches
463.Pq Event C2H
464Count retired branches including exceptions and interrupts.
465.It Li k8-fr-retired-branches-mispredicted
466.Pq Event C3H
467Count mispredicted retired branches.
468.It Li k8-fr-retired-far-control-transfers
469.Pq Event C6H
470Count retired far control transfers (which are always mispredicted).
471.It Li k8-fr-retired-fastpath-double-op-instructions Op Li ,mask= Ns Ar qualifier
472.Pq Event CCH
473Count retired fastpath double op instructions.
474This event is supported in revision B and later CPUs.
475This event may be further qualified using
476.Ar qualifier ,
477which is a
478.Ql +
479separated set of the following keywords:
480.Pp
481.Bl -tag -width indent -compact
482.It Li low-op-pos-0
483Count instructions with the low op in position 0.
484.It Li low-op-pos-1
485Count instructions with the low op in position 1.
486.It Li low-op-pos-2
487Count instructions with the low op in position 2.
488.El
489.Pp
490The default is to count all types of instructions.
491.It Li k8-fr-retired-fpu-instructions Op Li ,mask= Ns Ar qualifier
492.Pq Event CBH
493Count retired FPU instructions.
494This event is supported in revision B and later CPUs.
495This event may be further qualified using
496.Ar qualifier ,
497which is a
498.Ql +
499separated set of the following keywords:
500.Pp
501.Bl -tag -width indent -compact
502.It Li mmx-3dnow
503Count MMX and 3DNow!\& instructions.
504.It Li packed-sse-sse2
505Count packed SSE and SSE2 instructions.
506.It Li scalar-sse-sse2
507Count scalar SSE and SSE2 instructions
508.It Li x87
509Count x87 instructions.
510.El
511.Pp
512The default is to count all types of instructions.
513.It Li k8-fr-retired-near-returns
514.Pq Event C8H
515Count retired near returns.
516.It Li k8-fr-retired-near-returns-mispredicted
517.Pq Event C9H
518Count mispredicted near returns.
519.It Li k8-fr-retired-resyncs
520.Pq Event C7H
521Count retired resyncs (non-control transfer branches).
522.It Li k8-fr-retired-taken-branches
523.Pq Event C4H
524Count retired taken branches.
525.It Li k8-fr-retired-taken-branches-mispredicted
526.Pq Event C5H
527Count retired taken branches that were mispredicted.
528.It Li k8-fr-retired-taken-branches-mispredicted-by-addr-miscompare
529.Pq Event CAH
530Count retired taken branches that were mispredicted only due to an
531address miscompare.
532.It Li k8-fr-retired-taken-hardware-interrupts
533.Pq Event CFH
534Count retired taken hardware interrupts.
535.It Li k8-fr-retired-uops
536.Pq Event C1H
537Count retired uops.
538.It Li k8-fr-retired-x86-instructions
539.Pq Event C0H
540Count retired x86 instructions including exceptions and interrupts.
541.It Li k8-ic-fetch
542.Pq Event 80H
543Count instruction cache fetches.
544.It Li k8-ic-instruction-fetch-stall
545.Pq Event 87H
546Count cycles in stalls due to instruction fetch.
547.It Li k8-ic-l1-itlb-miss-and-l2-itlb-hit
548.Pq Event 84H
549Count L1 ITLB misses that are L2 ITLB hits.
550.It Li k8-ic-l1-itlb-miss-and-l2-itlb-miss
551.Pq Event 85H
552Count ITLB misses that miss in both L1 and L2 ITLBs.
553.It Li k8-ic-microarchitectural-resync-by-snoop
554.Pq Event 86H
555Count microarchitectural resyncs caused by snoops.
556.It Li k8-ic-miss
557.Pq Event 81H
558Count instruction cache misses.
559.It Li k8-ic-refill-from-l2
560.Pq Event 82H
561Count instruction cache refills from L2 cache.
562.It Li k8-ic-refill-from-system
563.Pq Event 83H
564Count instruction cache refills from system memory.
565.It Li k8-ic-return-stack-hits
566.Pq Event 88H
567Count hits to the return stack.
568.It Li k8-ic-return-stack-overflow
569.Pq Event 89H
570Count overflows of the return stack.
571.It Li k8-ls-buffer2-full
572.Pq Event 23H
573Count load/store buffer2 full events.
574.It Li k8-ls-locked-operation Op Li ,mask= Ns Ar qualifier
575.Pq Event 24H
576Count locked operations.
577For revision C and later CPUs, the following qualifiers are supported:
578.Pp
579.Bl -tag -width indent -compact
580.It Li cycles-in-request
581Count the number of cycles in the lock request/grant stage.
582.It Li cycles-to-complete
583Count the number of cycles a lock takes to complete once it is
584non-speculative and is the older load/store operation.
585.It Li locked-instructions
586Count the number of lock instructions executed.
587.El
588.Pp
589The default is to count the number of lock instructions executed.
590.It Li k8-ls-microarchitectural-late-cancel
591.Pq Event 25H
592Count microarchitectural late cancels of operations in the load/store
593unit.
594.It Li k8-ls-microarchitectural-resync-by-self-modifying-code
595.Pq Event 21H
596Count microarchitectural resyncs caused by self-modifying code.
597.It Li k8-ls-microarchitectural-resync-by-snoop
598.Pq Event 22H
599Count microarchitectural resyncs caused by snoops.
600.It Li k8-ls-retired-cflush-instructions
601.Pq Event 26H
602Count retired CFLUSH instructions.
603.It Li k8-ls-retired-cpuid-instructions
604.Pq Event 27H
605Count retired CPUID instructions.
606.It Li k8-ls-segment-register-load Op Li ,mask= Ns Ar qualifier
607.Pq Event 20H
608Count segment register loads.
609This event may be further qualified using
610.Ar qualifier ,
611which is a
612.Ql +
613separated set of the following keywords:
614.Bl -tag -width indent -compact
615.It Li cs
616Count CS register loads.
617.It Li ds
618Count DS register loads.
619.It Li es
620Count ES register loads.
621.It Li fs
622Count FS register loads.
623.It Li gs
624Count GS register loads.
625.\" .It Li hs
626.\" Count HS register loads.
627.\" XXX "HS" register?
628.It Li ss
629Count SS register loads.
630.El
631.Pp
632The default is to count all types of loads.
633.It Li k8-nb-ht-bus0-bandwidth Op Li ,mask= Ns Ar qualifier
634.It Li k8-nb-ht-bus1-bandwidth Op Li ,mask= Ns Ar qualifier
635.It Li k8-nb-ht-bus2-bandwidth Op Li ,mask= Ns Ar qualifier
636.Pq Events F6H, F7H and F8H respectively
637Count events on the HyperTransport(tm) buses.
638These events may be further qualified using
639.Ar qualifier ,
640which is a
641.Ql +
642separated set of the following keywords:
643.Pp
644.Bl -tag -width indent -compact
645.It Li buffer-release
646Count buffer release messages sent.
647.It Li command
648Count command messages sent.
649.It Li data
650Count data messages sent.
651.It Li nop
652Count nop messages sent.
653.El
654.Pp
655The default is to count all types of messages.
656.It Li k8-nb-memory-controller-bypass-saturation Op Li ,mask= Ns Ar qualifier
657.Pq Event E4H
658Count memory controller bypass counter saturation events.
659This event may be further qualified using
660.Ar qualifier ,
661which is a
662.Ql +
663separated set of the following keywords:
664.Pp
665.Bl -tag -width indent -compact
666.It Li dram-controller-interface-bypass
667Count DRAM controller interface bypass.
668.It Li dram-controller-queue-bypass
669Count DRAM controller queue bypass.
670.It Li memory-controller-hi-pri-bypass
671Count memory controller high priority bypasses.
672.It Li memory-controller-lo-pri-bypass
673Count memory controller low priority bypasses.
674.El
675.It Li k8-nb-memory-controller-dram-slots-missed
676.Pq Event E2H
677Count memory controller DRAM command slots missed (in MemClks).
678.It Li k8-nb-memory-controller-page-access-event Op Li ,mask= Ns Ar qualifier
679.Pq Event E0H
680Count memory controller page access events.
681This event may be further qualified using
682.Ar qualifier ,
683which is a
684.Ql +
685separated set of the following keywords:
686.Pp
687.Bl -tag -width indent -compact
688.It Li page-conflict
689Count page conflicts.
690.It Li page-hit
691Count page hits.
692.It Li page-miss
693Count page misses.
694.El
695.Pp
696The default is to count all types of events.
697.It Li k8-nb-memory-controller-page-table-overflow
698.Pq Event E1H
699Count memory control page table overflow events.
700.It Li k8-nb-memory-controller-turnaround Op Li ,mask= Ns Ar qualifier
701.Pq Event E3H
702Count memory control turnaround events.
703This event may be further qualified using
704.Ar qualifier ,
705which is a
706.Ql +
707separated set of the following keywords:
708.Pp
709.Bl -tag -width indent -compact
710.\" XXX doc is unclear whether these are cycle counts or event counts
711.It Li dimm-turnaround
712Count DIMM turnarounds.
713.It Li read-to-write-turnaround
714Count read to write turnarounds.
715.It Li write-to-read-turnaround
716Count write to read turnarounds.
717.El
718.Pp
719The default is to count all types of events.
720.It Li k8-nb-probe-result Op Li ,mask= Ns Ar qualifier
721.Pq Event ECH
722Count probe events.
723This event may be further qualified using
724.Ar qualifier ,
725which is a
726.Ql +
727separated set of the following keywords:
728.Pp
729.Bl -tag -width indent -compact
730.It Li probe-hit
731Count all probe hits.
732.It Li probe-hit-dirty-no-memory-cancel
733Count probe hits without memory cancels.
734.It Li probe-hit-dirty-with-memory-cancel
735Count probe hits with memory cancels.
736.It Li probe-miss
737Count probe misses.
738.El
739.It Li k8-nb-sized-commands Op Li ,mask= Ns Ar qualifier
740.Pq Event EBH
741Count sized commands issued.
742This event may be further qualified using
743.Ar qualifier ,
744which is a
745.Ql +
746separated set of the following keywords:
747.Pp
748.Bl -tag -width indent -compact
749.It Li nonpostwrszbyte
750.It Li nonpostwrszdword
751.It Li postwrszbyte
752.It Li postwrszdword
753.It Li rdszbyte
754.It Li rdszdword
755.It Li rdmodwr
756.El
757.Pp
758The default is to count all types of commands.
759.El
760.Ss Event Name Aliases
761The following table shows the mapping between the PMC-independent
762aliases supported by
763.Lb libpmc
764and the underlying hardware events used.
765.Bl -column "branch-mispredicts" "Description"
766.It Em Alias Ta Em Event
767.It Li branches Ta Li k8-fr-retired-taken-branches
768.It Li branch-mispredicts Ta Li k8-fr-retired-taken-branches-mispredicted
769.It Li dc-misses Ta Li k8-dc-miss
770.It Li ic-misses Ta Li k8-ic-miss
771.It Li instructions Ta Li k8-fr-retired-x86-instructions
772.It Li interrupts Ta Li k8-fr-taken-hardware-interrupts
773.It Li unhalted-cycles Ta Li k8-bu-cpu-clk-unhalted
774.El
775.Sh SEE ALSO
776.Xr pmc 3 ,
777.Xr pmc.atom 3 ,
778.Xr pmc.core 3 ,
779.Xr pmc.core2 3 ,
780.Xr pmc.iaf 3 ,
781.Xr pmc.k7 3 ,
782.Xr pmc.p4 3 ,
783.Xr pmc.p5 3 ,
784.Xr pmc.p6 3 ,
785.Xr pmc.soft 3 ,
786.Xr pmc.tsc 3 ,
787.Xr pmclog 3 ,
788.Xr hwpmc 4
789.Sh HISTORY
790The
791.Nm pmc
792library first appeared in
793.Fx 6.0 .
794.Sh AUTHORS
795The
796.Lb libpmc
797library was written by
798.An Joseph Koshy Aq Mt jkoshy@FreeBSD.org .
799