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