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