background image

Vol. 3B 18-1

CHAPTER 18

PERFORMANCE MONITORING

Intel 64 and IA-32 architectures provide facilities for monitoring performance via a PMU (Performance Monitoring 
Unit).

18.1 PERFORMANCE 

MONITORING 

OVERVIEW

Performance monitoring was introduced in the Pentium processor with a set of model-specific performance-moni-
toring counter MSRs. These counters permit selection of processor performance parameters to be monitored and 
measured. The information obtained from these counters can be used for tuning system and compiler perfor-
mance. 
In Intel P6 family of processors, the performance monitoring mechanism was enhanced to permit a wider selection 
of events to be monitored and to allow greater control events to be monitored. Next, Intel processors based on 
Intel NetBurst microarchitecture introduced a distributed style of performance monitoring mechanism and perfor-
mance events.
The performance monitoring mechanisms and performance events defined for the Pentium, P6 family, and Intel 
processors based on Intel NetBurst microarchitecture are not architectural. They are all model specific (not 
compatible among processor families). Intel Core Solo and Intel Core Duo processors support a set of architectural 
performance events and a set of non-architectural performance events. Newer Intel processor generations support 
enhanced architectural performance events and non-architectural performance events.
Starting with Intel Core Solo and Intel Core Duo processors, there are two classes of performance monitoring capa-
bilities. The first class supports events for monitoring performance using counting or interrupt-based event 
sampling usage. These events are non-architectural and vary from one processor model to another. They are 
similar to those available in Pentium M processors. These non-architectural performance monitoring events are 
specific to the microarchitecture and may change with enhancements. They are discussed in Section 18.3, “Perfor-
mance Monitoring (Intel® Core™ Solo and Intel® Core™ Duo Processors).” 
Non-architectural events for a given 
microarchitecture can not be enumerated using CPUID; and they are listed in Chapter 19, “Performance-
Monitoring Events.”
The second class of performance monitoring capabilities is referred to as architectural performance monitoring. 
This class supports the same counting and Interrupt-based event sampling usages, with a smaller set of available 
events. The visible behavior of architectural performance events is consistent across processor implementations. 
Availability of architectural performance monitoring capabilities is enumerated using the CPUID.0AH. These events 
are discussed in Section 18.2.
See also:

— Section 18.2, “Architectural Performance Monitoring”
— Section 18.3, “Performance Monitoring (Intel® Core™ Solo and Intel® Core™ Duo Processors)”
— Section 18.4, “Performance Monitoring (Processors Based on Intel

® 

Core

 Microarchitecture)”

— Section 18.5, “Performance Monitoring (45 nm and 32 nm Intel

® 

Atom

 Processors)”

— Section 18.6, “Performance Monitoring for Silvermont Microarchitecture”
— Section 18.7, “Performance Monitoring for Goldmont Microarchitecture”
— Section 18.8, “Performance Monitoring for Processors Based on Intel

® 

Microarchitecture Code Name 

Nehalem”

— Section 18.8.4, “Performance Monitoring for Processors Based on Intel

® 

Microarchitecture Code Name 

Westmere”

— Section 18.9, “Performance Monitoring for Processors Based on Intel

® 

Microarchitecture Code Name Sandy 

Bridge”

— Section 18.9.8, “Intel

®

 Xeon

®

 Processor E5 Family Uncore Performance Monitoring Facility”