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