Welcome to the System on a Chip (SoC) uncore performance monitoring guide.
This article will introduce you to the SoC uncore performance monitoring event set and provide details on the events and how to interpret results.
The Silvermont generation of SoCs features a new set of uncore performance monitoring events which provide insight to platform behavior which has previously not been available. The uncore events can be used for platform characterization, application characterization and tuning, performance debug and optimization.
Introduction to the Silvermont based SoC
In order to use and understand uncore performance monitoring one must first become familiar with the basic SoC configuration.
The below image shows the block diagram of the Baytrail SoC and consists of:
- The north cluster containing
- Two processor modules, each containing two cores and a shared L2 cache.
- The Silvermont System Agent (SSA) which handles all traffic and coherency between all requesting agents and the memory controller
- Two DDR3 memory controllers with one memory channel each
- Seven requesting agents including module 0, module 1, image signal processor, Intel HD Graphics, video encode/decode engine, display controller and the low speed peripheral fabric (connection to all south cluster IO).
- The south cluster containing
- The low speed peripheral fabric which bridges all south cluster agents to the system agent
- A variety of agents such as audio, USB and SATA
The green arrows in the diagram represent points of observation that are available with uncore events.
What is an SoC uncore event?
In the Intel Atom SoC, there are three architectural regions for performance monitoring. The most well-known region is the core PerfMon events which count core centric behavior such as instructions retired, highlighted in yellow below.
The second region is the offcore matrix events which count events leaving/entering the processor module such as memory reads, highlighted in orange below.
The third region is the uncore, which encompasses system agent, memory and per uncore agents such as graphics controller, display controller, memory controller and IO, highlighted in red below.
What is a SoC uncore event group?
Up to eight uncore events can be monitored concurrently and this set of events being monitored are referred to as a group. Groups and the events in the group are pre-determined and counting is done by selecting a sampling group, not a single event. Each group is represented as one input file to sampling software.
Pre-packed group files come with the monitoring tools and contain all of the available uncore events. It is important to understand that only one group/file can be sampled at a time.
Each group file used by the sampling software is available for viewing in plain text and contains:
- Header with file date, revision, target SoC and group name
- List of events included in the group with the event name and description
- SOC programming
- COUNTER programming
Baytrail, Merrifield and Rangeley share common uncore events but each SoC can have unique events that apply only to that platform.
Sampling SoC uncore events
There are four steps required to collect and analyze uncore performance monitoring events.
- Acquire and use Intel performance monitoring software enabled with SoC uncore sampling
- Determine which uncore group to sample. This process varies depending on which software tool you use, please refer to the tool documentation.
- Collect uncore group data while running the workload under test
- Analyze results
To learn about the uncore events and groups available and how to analyze results, please select your SoC of interest below.
Intel performance monitoring software options
Monitoring SoC uncore performance events can only be done with Intel performance monitoring software. VTune/Amplifier, SEP and SoCWatch all provide tool specific documentation on how to sample uncore events. Please refer to the documentation included with the sampling software on how to collect events with that tool.
- SEP (Included with Vtune)
Enabling uncore monitoring
In order to sample uncore events, the feature must be enabled by BIOS/FW. Indicators that the FW is not configured for uncore monitoring are:
- All events counts are zero
- System agent event counts correctly but all memory controller event counts are zero
On a platform enabled with BIOS menus, there may be a menu option to change PDM/DFX setting. The desired setting is “PerfMode”. Otherwise you must acquire a FW version with uncore monitoring enabled from your firmware provider.