# libpfm_intel_bdx_unc_cbo

## NAME



           libpfm_intel_bdx_unc_cbo - support for Intel Broadwell Server C-
           Box uncore PMU
    


## SYNOPSIS



           **#include <perfmon/pfmlib.h>**
    
           **PMU name: bdx_unc_cbo[0-21]**
           **PMU desc: Intel Broadwell Server C-Box uncore PMU**
    


## DESCRIPTION



           The library supports the Intel Broadwell Server C-Box (coherency
           engine) uncore PMU.  This PMU model exists on various Broadwell
           server models (79, 86) . There is one C-box PMU per physical core.
           Therefore there are up to twenty-one identical C-Box PMU instances
           numbered from 0 to 21. On dual-socket systems, the number refers
           to the C-Box PMU on the socket where the program runs. For
           instance, if running on CPU18, then bdx_unc_cbo0 refers to the C-
           Box for physical core 0 on socket 1. Conversely, if running on
           CPU0, then the same bdx_unc_cbo0 refers to the C-Box for physical
           core 0 but on socket 0.
    
           Each C-Box PMU implements 4 generic counters and two filter
           registers used only with certain events and umasks.
    


## MODIFIERS



           The following modifiers are supported on Intel Broadwell C-Box
           uncore PMU:
    
           **e** Enable edge detection, i.e., count only when there is a
                  state transition from no occurrence of the event to at
                  least one occurrence. This modifier must be combined with a
                  threshold modifier (t) with a value greater or equal to
                  one.  This is a boolean modifier.
    
           **t** Set the threshold value. When set to a non-zero value, the
                  counter counts the number of C-Box cycles in which the
                  number of occurrences of the event is greater or equal to
                  the threshold.  This is an integer modifier with values in
                  the range [0:255].
    
           **nf** Node filter. Certain events, such as UNC_C_LLC_LOOKUP,
                  UNC_C_LLC_VICTIMS, provide a **NID** umask.  Sometimes the **NID**
                  is combined with other filtering capabilities, such as
                  opcodes.  The node filter is an 8-bit max bitmask. A node
                  corresponds to a processor socket. The legal values
                  therefore depend on the underlying hardware configuration.
                  For dual-socket systems, the bitmask has two valid bits
                  [0:1].
    
           **cf** Core Filter. This is a 5-bit filter which is used to filter
                  based on physical core origin of the C-Box request.
                  Possible values are 0-63. If the filter is not specified,
                  then no filtering takes place. Bit  0-3 indicate  the
                  physical core id and bit 4 filters on non thread-related
                  data.
    
           **tf** Thread Filter. This is a 1-bit filter which is used to
                  filter C-Box requests based on logical processor (hyper-
                  thread) identification. Possibles values are 0-1. If the
                  filter is not specified, then no filtering takes place.
    
           **nc** Non-Coherent. This is a 1-bit filter which is used to
                  filter C-Box requests only for the TOR_INSERTS and
                  TOR_OCCUPANCY umasks using the OPCODE matcher. If the
                  filter is not specified, then no filtering takes place.
    
           **isoc** Isochronous. This is a 1-bit filter which is used to filter
                  C-Box requests only for the TOR_INSERTS and TOR_OCCUPANCY
                  umasks using the OPCODE matcher. If the filter is not
                  specified, then no filtering takes place.
    


## Opcode filtering



           Certain events, such as UNC_C_TOR_INSERTS supports opcode matching
           on the C-BOX transaction type. To use this feature, first an
           opcode matching umask must be selected, e.g., MISS_OPCODE.
           Second, the opcode to match on must be selected via a second umask
           among the OPC_* umasks.  For instance,
           UNC_C_TOR_INSERTS:OPCODE:OPC_RFO, counts the number of TOR
           insertions for RFO transactions.
    
           Opcode matching may be combined with node filtering with certain
           umasks. In general, the filtering support is encoded into the
           umask name, e.g., NID_OPCODE supports both node and opcode
           filtering. For instance,
           UNC_C_TOR_INSERTS:NID_OPCODE:OPC_RFO:nf=1.
    


* * *