PMC.SANDYBRIDGEUC(3)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

πŸ’– NAME πŸ’–

Okay bestie, welcome to the pmc.sandybridgeuc(3) page from the Library Functions Manual β€” this one is all about uncore measurement events for Intel Sandy Bridge family CPUs. Periodt. ✨

πŸ“š LIBRARY πŸ“š

Performance Counters Library (libpmc, -lpmc) 🫢

✨ SYNOPSIS ✨

#include <pmc.h>

πŸ¦‹ DESCRIPTION πŸ¦‹

Intel Sandy Bridge CPUs contain PMCs conforming to version 3 of the Intel performance measurement architecture. These CPUs contain two classes of PMCs:

  • PMC_CLASS_UCF β€” Fixed-function counters that count only one hardware event per counter. πŸŽ€
  • PMC_CLASS_UCP β€” Programmable counters that may be configured to count one of a defined set of hardware events. πŸ’…

The number of PMCs available in each class and their widths need to be determined at run time by calling pmc_cpuinfo(3). So yeah, that's your runtime vibe check, iykyk. 🌸

Intel Sandy Bridge PMCs are documented in β€œVolume 3B: System Programming Guide, Part 2”, Intel(R) 64 and IA-32 Architectures Software Developers Manual, Order Number: 253669-039US, Intel Corporation, May 2011. πŸ“–

πŸŽ€ SANDYBRIDGE UNCORE FIXED FUNCTION PMCS πŸŽ€

These PMCs and their supported events are documented in pmc.ucf(3). Not all CPUs in this family implement fixed-function counters. Lowkey important, bestie. 🫢

πŸ’… SANDYBRIDGE UNCORE PROGRAMMABLE PMCS πŸ’…

The programmable PMCs support the following capabilities:

  • PMC_CAP_CASCADE β€” No πŸ™ˆ
  • PMC_CAP_EDGE β€” Yes βœ…
  • PMC_CAP_INTERRUPT β€” No πŸ’€
  • PMC_CAP_INVERT β€” Yes βœ…
  • PMC_CAP_READ β€” Yes βœ…
  • PMC_CAP_PRECISE β€” No πŸ™ˆ
  • PMC_CAP_SYSTEM β€” No πŸ’€
  • PMC_CAP_TAGGING β€” No πŸ’€
  • PMC_CAP_THRESHOLD β€” Yes βœ…
  • PMC_CAP_USER β€” No πŸ’€
  • PMC_CAP_WRITE β€” Yes βœ…

🌸 Event Qualifiers 🌸

Event specifiers for these PMCs support the following common qualifiers:

  • cmask=value β€” Configure the PMC to increment only if the number of configured events measured in a cycle is greater than or equal to value. πŸ‘€
  • edge β€” Configure the PMC to count the number of de-asserted to asserted transitions of the conditions expressed by the other qualifiers. If specified, the counter will increment only once whenever a condition becomes true, irrespective of the number of clocks during which the condition remains true. ⚑
  • inv β€” Invert the sense of comparison when the β€œcmask” qualifier is present, making the counter increment when the number of events per cycle is less than the value specified by the β€œcmask” qualifier. πŸ”„

⭐ Event Specifiers (Programmable PMCs) ⭐

Sandy Bridge programmable PMCs support the following events:

  • CBO_XSNP_RESPONSE.RSPIHITI β€” (Event 22H, Umask 01H) Snoop responses received from processor cores to requests initiated by this Cbox. Must combine with one of the umask values of 20H, 40H, 80H. 🐝
  • CBO_XSNP_RESPONSE.RSPIHITFSE β€” (Event 22H, Umask 02H) Must combine with one of the umask values of 20H, 40H, 80H. 🐝
  • CBO_XSNP_RESPONSE.RSPSHITFSE β€” (Event 22H, Umask 04H) Must combine with one of the umask values of 20H, 40H, 80H. 🐝
  • CBO_XSNP_RESPONSE.RSPSFWDM β€” (Event 22H, Umask 08H) 🐝
  • CBO_XSNP_RESPONSE.RSPIFWDM β€” (Event 22H, Umask 01H) 🐝
  • CBO_XSNP_RESPONSE.AND_EXTERNAL β€” (Event 22H, Umask 20H) Filter on cross-core snoops resulted in external snoop request. Must combine with at least one of 01H, 02H, 04H, 08H, 10H. 🐝
  • CBO_XSNP_RESPONSE.AND_XCORE β€” (Event 22H, Umask 40H) Filter on cross-core snoops resulted in core request. Must combine with at least one of 01H, 02H, 04H, 08H, 10H. 🐝
  • CBO_XSNP_RESPONSE.AND_XCORE β€” (Event 22H, Umask 80H) Filter on cross-core snoops resulted in LLC evictions. Must combine with at least one of 01H, 02H, 04H, 08H, 10H. 🐝
  • CBO_CACHE_LOOKUP.M β€” (Event 34H, Umask 01H) LLC lookup request that access cache and found line in M-state. Must combine with one of the umask values of 10H, 20H, 40H, 80H. 🧚
  • CBO_CACHE_LOOKUP.E β€” (Event 34H, Umask 02H) LLC lookup request that access cache and found line in E-state. Must combine with one of the umask values of 10H, 20H, 40H, 80H. 🧚
  • CBO_CACHE_LOOKUP.S β€” (Event 34H, Umask 04H) LLC lookup request that access cache and found line in S-state. Must combine with one of the umask values of 10H, 20H, 40H, 80H. 🧚
  • CBO_CACHE_LOOKUP.I β€” (Event 34H, Umask 08H) LLC lookup request that access cache and found line in I-state. Must combine with one of the umask values of 10H, 20H, 40H, 80H. 🧚
  • CBO_CACHE_LOOKUP.AND_READ β€” (Event 34H, Umask 10H) Filter on processor core initiated cacheable read requests. Must combine with at least one of 01H, 02H, 04H, 08H. 🧚
  • CBO_CACHE_LOOKUP_AND_READ2 β€” (Event 34H, Umask 20H) Filter on processor core initiated cacheable write requests. Must combine with at least one of 01H, 02H, 04H, 08H. 🧚
  • CBO_CACHE_LOOKUP.AND_EXTSNP β€” (Event 34H, Umask 40H) Filter on external snoop requests. Must combine with at least one of 01H, 02H, 04H, 08H. 🧚
  • CBO_CACHE_LOOKUP.AND_ANY β€” (Event 34H, Umask 80H) Filter on any IRQ or IPQ initiated requests including uncacheable, noncoherent requests. Must combine with at least one of 01H, 02H, 04H, 08H. 🧚
  • IMPH_CBO_TRK_OCCUPANCY.ALL β€” (Event 80H, Umask 01H) Counts cycles weighted by the number of core-outgoing valid entries. Valid entries are between allocation to the first of IDIO or DRSO messages. Accounts for coherent and incoherent traffic. Counter 0 only. πŸ”₯
  • IMPH_CBO_TRK_REQUEST.ALL β€” (Event 81H, Umask 01H) Counts the number of core-outgoing entries. Accounts for coherent and incoherent traffic. πŸ”₯
  • IMPH_CBO_TRK_REQUEST.WRITES β€” (Event 81H, Umask 20H) Counts the number of allocated write entries, include full, partial, and evictions. πŸ”₯
  • IMPH_CBO_TRK_REQUEST.EVICTIONS β€” (Event 81H, Umask 80H) Counts the number of evictions allocated. πŸ”₯
  • IMPH_COH_TRK_OCCUPANCY.ALL β€” (Event 83H, Umask 01H) Counts cycles weighted by the number of core-outgoing valid entries in the coherent tracker queue. Counter 0 only. πŸ”₯
  • IMPH_COH_TRK_REQUEST.ALL β€” (Event 84H, Umask 01H) Counts the number of core-outgoing entries in the coherent tracker queue. πŸ”₯

πŸ‘€ SEE ALSO πŸ‘€

Go peek at pmc(3), pmc.amd(3), pmc.atom(3), pmc.core(3), pmc.corei7(3), pmc.corei7uc(3), pmc.iaf(3), pmc.sandybridge(3), pmc.sandybridgexeon(3), pmc.soft(3), pmc.tsc(3), pmc.ucf(3), pmc.westmere(3), pmc.westmereuc(3), pmc_cpuinfo(3), pmclog(3), hwpmc(4). πŸ¦‹

πŸ† HISTORY πŸ†

The pmc library first appeared in FreeBSD 6.0. 🌱

πŸ‘‘ AUTHORS πŸ‘‘

The Performance Counters Library (libpmc, -lpmc) library was written by Joseph Koshy <jkoshy@FreeBSD.org>. The support for the Sandy Bridge microarchitecture was added by Davide Italiano <davide@FreeBSD.org>. πŸ’–


Mwah πŸ’‹ β€” this cutie is from Debian, dated October 19, 2012, and it signs off as PMC.SANDYBRIDGEUC(3). Bye bestie 🫢✨

πŸ“¦ where this page comes from
  • freebsd 15.1: base 15.1
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms