xref: /freebsd/lib/libpmc/pmc.haswelluc.3 (revision 2b7af31cf5e70677f52214702a95d4225564c52d)
1cc0c1555SSean Bruno.\" Copyright (c) 2013 Hiren Panchasara <hiren.panchasara@gmail.com>
2cc0c1555SSean Bruno.\" All rights reserved.
3cc0c1555SSean Bruno.\"
4cc0c1555SSean Bruno.\" Redistribution and use in source and binary forms, with or without
5cc0c1555SSean Bruno.\" modification, are permitted provided that the following conditions
6cc0c1555SSean Bruno.\" are met:
7cc0c1555SSean Bruno.\" 1. Redistributions of source code must retain the above copyright
8cc0c1555SSean Bruno.\"    notice, this list of conditions and the following disclaimer.
9cc0c1555SSean Bruno.\" 2. Redistributions in binary form must reproduce the above copyright
10cc0c1555SSean Bruno.\"    notice, this list of conditions and the following disclaimer in the
11cc0c1555SSean Bruno.\"    documentation and/or other materials provided with the distribution.
12cc0c1555SSean Bruno.\"
13cc0c1555SSean Bruno.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
14cc0c1555SSean Bruno.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15cc0c1555SSean Bruno.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16cc0c1555SSean Bruno.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
17cc0c1555SSean Bruno.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18cc0c1555SSean Bruno.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19cc0c1555SSean Bruno.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20cc0c1555SSean Bruno.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21cc0c1555SSean Bruno.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22cc0c1555SSean Bruno.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23cc0c1555SSean Bruno.\" SUCH DAMAGE.
24cc0c1555SSean Bruno.\"
25cc0c1555SSean Bruno.\" $FreeBSD$
26cc0c1555SSean Bruno.\"
27cc0c1555SSean Bruno.Dd March 22, 2013
28cc0c1555SSean Bruno.Dt PMC.HASWELLUC 3
29cc0c1555SSean Bruno.Os
30cc0c1555SSean Bruno.Sh NAME
31cc0c1555SSean Bruno.Nm pmc.haswelluc
32cc0c1555SSean Bruno.Nd uncore measurement events for
33cc0c1555SSean Bruno.Tn Intel
34cc0c1555SSean Bruno.Tn Haswell
35cc0c1555SSean Brunofamily CPUs
36cc0c1555SSean Bruno.Sh LIBRARY
37cc0c1555SSean Bruno.Lb libpmc
38cc0c1555SSean Bruno.Sh SYNOPSIS
39cc0c1555SSean Bruno.In pmc.h
40cc0c1555SSean Bruno.Sh DESCRIPTION
41cc0c1555SSean Bruno.Tn Intel
42cc0c1555SSean Bruno.Tn "Haswell"
43cc0c1555SSean BrunoCPUs contain PMCs conforming to version 3 of the
44cc0c1555SSean Bruno.Tn Intel
45cc0c1555SSean Brunoperformance measurement architecture.
46cc0c1555SSean BrunoThese CPUs contain two classes of PMCs:
47cc0c1555SSean Bruno.Bl -tag -width "Li PMC_CLASS_UCP"
48cc0c1555SSean Bruno.It Li PMC_CLASS_UCF
49cc0c1555SSean BrunoFixed-function counters that count only one hardware event per counter.
50cc0c1555SSean Bruno.It Li PMC_CLASS_UCP
51cc0c1555SSean BrunoProgrammable counters that may be configured to count one of a defined
52cc0c1555SSean Brunoset of hardware events.
53cc0c1555SSean Bruno.El
54cc0c1555SSean Bruno.Pp
55cc0c1555SSean BrunoThe number of PMCs available in each class and their widths need to be
56cc0c1555SSean Brunodetermined at run time by calling
57cc0c1555SSean Bruno.Xr pmc_cpuinfo 3 .
58cc0c1555SSean Bruno.Pp
59cc0c1555SSean BrunoIntel Haswell PMCs are documented in
60cc0c1555SSean Bruno.Rs
61cc0c1555SSean Bruno.%B "Intel(R) 64 and IA-32 Architectures Software Developers Manual"
62cc0c1555SSean Bruno.%T "Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B and 3C"
63cc0c1555SSean Bruno.%N "Order Number: 325462-045US"
64cc0c1555SSean Bruno.%D January 2013
65cc0c1555SSean Bruno.%Q "Intel Corporation"
66cc0c1555SSean Bruno.Re
67cc0c1555SSean Bruno.Ss HASWELL UNCORE FIXED FUNCTION PMCS
68cc0c1555SSean BrunoThese PMCs and their supported events are documented in
69cc0c1555SSean Bruno.Xr pmc.ucf 3 .
70cc0c1555SSean BrunoNot all CPUs in this family implement fixed-function counters.
71cc0c1555SSean Bruno.Ss HASWELL UNCORE PROGRAMMABLE PMCS
72cc0c1555SSean BrunoThe programmable PMCs support the following capabilities:
73cc0c1555SSean Bruno.Bl -column "PMC_CAP_INTERRUPT" "Support"
74cc0c1555SSean Bruno.It Em Capability Ta Em Support
75cc0c1555SSean Bruno.It PMC_CAP_CASCADE Ta \&No
76cc0c1555SSean Bruno.It PMC_CAP_EDGE Ta Yes
77cc0c1555SSean Bruno.It PMC_CAP_INTERRUPT Ta \&No
78cc0c1555SSean Bruno.It PMC_CAP_INVERT Ta Yes
79cc0c1555SSean Bruno.It PMC_CAP_READ Ta Yes
80cc0c1555SSean Bruno.It PMC_CAP_PRECISE Ta \&No
81cc0c1555SSean Bruno.It PMC_CAP_SYSTEM Ta \&No
82cc0c1555SSean Bruno.It PMC_CAP_TAGGING Ta \&No
83cc0c1555SSean Bruno.It PMC_CAP_THRESHOLD Ta Yes
84cc0c1555SSean Bruno.It PMC_CAP_USER Ta \&No
85cc0c1555SSean Bruno.It PMC_CAP_WRITE Ta Yes
86cc0c1555SSean Bruno.El
87cc0c1555SSean Bruno.Ss Event Qualifiers
88cc0c1555SSean BrunoEvent specifiers for these PMCs support the following common
89cc0c1555SSean Brunoqualifiers:
90cc0c1555SSean Bruno.Bl -tag -width indent
91cc0c1555SSean Bruno.It Li cmask= Ns Ar value
92cc0c1555SSean BrunoConfigure the PMC to increment only if the number of configured
93cc0c1555SSean Brunoevents measured in a cycle is greater than or equal to
94cc0c1555SSean Bruno.Ar value .
95cc0c1555SSean Bruno.It Li edge
96cc0c1555SSean BrunoConfigure the PMC to count the number of de-asserted to asserted
97cc0c1555SSean Brunotransitions of the conditions expressed by the other qualifiers.
98cc0c1555SSean BrunoIf specified, the counter will increment only once whenever a
99cc0c1555SSean Brunocondition becomes true, irrespective of the number of clocks during
100cc0c1555SSean Brunowhich the condition remains true.
101cc0c1555SSean Bruno.It Li inv
102cc0c1555SSean BrunoInvert the sense of comparison when the
103cc0c1555SSean Bruno.Dq Li cmask
104cc0c1555SSean Brunoqualifier is present, making the counter increment when the number of
105cc0c1555SSean Brunoevents per cycle is less than the value specified by the
106cc0c1555SSean Bruno.Dq Li cmask
107cc0c1555SSean Brunoqualifier.
108cc0c1555SSean Bruno.El
109cc0c1555SSean Bruno.Ss Event Specifiers (Programmable PMCs)
110cc0c1555SSean BrunoHaswell programmable PMCs support the following events:
111cc0c1555SSean Bruno.Bl -tag -width indent
112cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.MISS
113cc0c1555SSean Bruno.Pq Event 22H , Umask 01H
114cc0c1555SSean BrunoA snoop misses in some processor core.
115cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.INVAL
116cc0c1555SSean Bruno.Pq Event 22H , Umask 02H
117cc0c1555SSean BrunoA snoop invalidates a non-modified line in some
118cc0c1555SSean Brunoprocessor core.
119cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.HIT
120cc0c1555SSean Bruno.Pq Event 22H , Umask 04H
121cc0c1555SSean BrunoA snoop hits a non-modified line in some processor
122cc0c1555SSean Brunocore.
123cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.HITM
124cc0c1555SSean Bruno.Pq Event 22H , Umask 08H
125cc0c1555SSean BrunoA snoop hits a modified line in some processor core.
126cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.INVAL_M
127cc0c1555SSean Bruno.Pq Event 22H , Umask 10H
128cc0c1555SSean BrunoA snoop invalidates a modified line in some processor
129cc0c1555SSean Brunocore.
130cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.EXTERNAL_FILTER
131cc0c1555SSean Bruno.Pq Event 22H , Umask 20H
132cc0c1555SSean BrunoFilter on cross-core snoops initiated by this Cbox due
133cc0c1555SSean Brunoto external snoop request.
134cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.XCORE_FILTER
135cc0c1555SSean Bruno.Pq Event 22H , Umask 40H
136cc0c1555SSean BrunoFilter on cross-core snoops initiated by this Cbox due
137cc0c1555SSean Brunoto processor core memory request.
138cc0c1555SSean Bruno.It Li UNC_CBO_XSNP_RESPONSE.EVICTION_FILTER
139cc0c1555SSean Bruno.Pq Event 22H , Umask 80H
140cc0c1555SSean BrunoFilter on cross-core snoops initiated by this Cbox due
141cc0c1555SSean Brunoto LLC eviction.
142cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.M
143cc0c1555SSean Bruno.Pq Event 34H , Umask 01H
144cc0c1555SSean BrunoLLC lookup request that access cache and found line in
145cc0c1555SSean BrunoM-state.
146cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.ES
147cc0c1555SSean Bruno.Pq Event 34H , Umask 06H
148cc0c1555SSean BrunoLLC lookup request that access cache and found line in
149cc0c1555SSean BrunoE or S state.
150cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.I
151cc0c1555SSean Bruno.Pq Event 34H , Umask 08H
152cc0c1555SSean BrunoLLC lookup request that access cache and found line in
153cc0c1555SSean BrunoI-state.
154cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.READ_FILTER
155cc0c1555SSean Bruno.Pq Event 34H , Umask 10H
156cc0c1555SSean BrunoFilter on processor core initiated cacheable read
157cc0c1555SSean Brunorequests. Must combine with at least one of 01H, 02H,
158cc0c1555SSean Bruno04H, 08H.
159cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.WRITE_FILTER
160cc0c1555SSean Bruno.Pq Event 34H , Umask 20H
161cc0c1555SSean BrunoFilter on processor core initiated cacheable write
162cc0c1555SSean Brunorequests. Must combine with at least one of 01H, 02H,
163cc0c1555SSean Bruno04H, 08H.
164cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.EXTSNP_FILTER
165cc0c1555SSean Bruno.Pq Event 34H , Umask 40H
166cc0c1555SSean BrunoFilter on external snoop requests. Must combine with
167cc0c1555SSean Brunoat least one of 01H, 02H, 04H, 08H.
168cc0c1555SSean Bruno.It Li UNC_CBO_CACHE_LOOKUP.ANY_REQUEST_FILTER
169cc0c1555SSean Bruno.Pq Event 34H , Umask 80H
170cc0c1555SSean BrunoFilter on any IRQ or IPQ initiated requests including
171cc0c1555SSean Brunouncacheable, non-coherent requests. Must combine
172cc0c1555SSean Brunowith at least one of 01H, 02H, 04H, 08H.
173cc0c1555SSean Bruno.It Li UNC_ARB_TRK_OCCUPANCY.ALL
174cc0c1555SSean Bruno.Pq Event 80H , Umask 01H
175cc0c1555SSean BrunoCounts cycles weighted by the number of requests
176cc0c1555SSean Brunowaiting for data returning from the memory controller.
177cc0c1555SSean BrunoAccounts for coherent and non-coherent requests
178cc0c1555SSean Brunoinitiated by IA cores, processor graphic units, or LLC.
179cc0c1555SSean Bruno.It Li UNC_ARB_TRK_REQUEST.ALL
180cc0c1555SSean Bruno.Pq Event 81H , Umask 01H
181cc0c1555SSean BrunoCounts the number of coherent and in-coherent
182cc0c1555SSean Brunorequests initiated by IA cores, processor graphic units,
183cc0c1555SSean Brunoor LLC.
184cc0c1555SSean Bruno.It Li UNC_ARB_TRK_REQUEST.WRITES
185cc0c1555SSean Bruno.Pq Event 81H , Umask 20H
186cc0c1555SSean BrunoCounts the number of allocated write entries, include
187cc0c1555SSean Brunofull, partial, and LLC evictions.
188cc0c1555SSean Bruno.It Li UNC_ARB_TRK_REQUEST.EVICTIONS
189cc0c1555SSean Bruno.Pq Event 81H , Umask 80H
190cc0c1555SSean BrunoCounts the number of LLC evictions allocated.
191cc0c1555SSean Bruno.It Li UNC_ARB_COH , Umask TRK_OCCUPANCY.ALL
192cc0c1555SSean Bruno.Pq Event 83H , Umask 01H
193cc0c1555SSean BrunoCycles weighted by number of requests pending in
194cc0c1555SSean BrunoCoherency Tracker.
195cc0c1555SSean Bruno.It Li UNC_ARB_COH , Umask TRK_REQUEST.ALL
196cc0c1555SSean Bruno.Pq Event 84H , Umask 01H
197cc0c1555SSean BrunoNumber of requests allocated in Coherency Tracker.
198cc0c1555SSean Bruno.El
199cc0c1555SSean Bruno.Sh SEE ALSO
200cc0c1555SSean Bruno.Xr pmc 3 ,
201cc0c1555SSean Bruno.Xr pmc.atom 3 ,
202cc0c1555SSean Bruno.Xr pmc.core 3 ,
203cc0c1555SSean Bruno.Xr pmc.corei7 3 ,
204cc0c1555SSean Bruno.Xr pmc.corei7uc 3 ,
205cc0c1555SSean Bruno.Xr pmc.haswell 3 ,
206cc0c1555SSean Bruno.Xr pmc.iaf 3 ,
207cc0c1555SSean Bruno.Xr pmc.k7 3 ,
208cc0c1555SSean Bruno.Xr pmc.k8 3 ,
209cc0c1555SSean Bruno.Xr pmc.p4 3 ,
210cc0c1555SSean Bruno.Xr pmc.p5 3 ,
211cc0c1555SSean Bruno.Xr pmc.p6 3 ,
212cc0c1555SSean Bruno.Xr pmc.sandybridge 3 ,
213cc0c1555SSean Bruno.Xr pmc.sandybridgeuc 3 ,
214cc0c1555SSean Bruno.Xr pmc.sandybridgexeon 3 ,
215cc0c1555SSean Bruno.Xr pmc.soft 3 ,
216cc0c1555SSean Bruno.Xr pmc.tsc 3 ,
217cc0c1555SSean Bruno.Xr pmc.ucf 3 ,
218cc0c1555SSean Bruno.Xr pmc.westmere 3 ,
219cc0c1555SSean Bruno.Xr pmc.westmereuc 3 ,
220cc0c1555SSean Bruno.Xr pmc_cpuinfo 3 ,
221cc0c1555SSean Bruno.Xr pmclog 3 ,
222cc0c1555SSean Bruno.Xr hwpmc 4
223cc0c1555SSean Bruno.Sh HISTORY
224cc0c1555SSean BrunoThe
225cc0c1555SSean Bruno.Nm pmc
226cc0c1555SSean Brunolibrary first appeared in
227cc0c1555SSean Bruno.Fx 6.0 .
228cc0c1555SSean Bruno.Sh AUTHORS
229*2b7af31cSBaptiste Daroussin.An -nosplit
230cc0c1555SSean BrunoThe
231cc0c1555SSean Bruno.Lb libpmc
232cc0c1555SSean Brunolibrary was written by
233*2b7af31cSBaptiste Daroussin.An Joseph Koshy Aq Mt jkoshy@FreeBSD.org .
234cc0c1555SSean BrunoThe support for the Haswell
235cc0c1555SSean Brunomicroarchitecture was added by
236*2b7af31cSBaptiste Daroussin.An Hiren Panchasara Aq Mt hiren.panchasara@gmail.com .
237