background image

Vol. 3B 14-7

POWER AND THERMAL MANAGEMENT

14.4.2 Enabling 

HWP 

The layout of the IA32_PM_ENABLE MSR is shown in Figure 14-4. The bit fields are described below: 

HWP_ENABLE (bit 0, R/W1Once) — Software sets this bit to enable HWP with autonomous selection. When 
set, the processor will disregard input from the legacy performance control interface (IA32_PERF_CTL). Note 
this bit can only be enabled once from the default value. Once set, writes to the HWP_ENABLE bit are ignored. 
Only RESET will clear this bit. Default = zero (0). 

Bits 63:1 are reserved and must be zero.

After software queries CPUID and verifies the processor’s support of HWP, system software can write 1 to 
IA32_PM_ENABLE.HWP_ENABLE (bit 0) to enable hardware controlled performance states. The default value of 
IA32_PM_ENABLE MSR at power-on is 0, i.e. HWP is disabled.
Additional MSRs associated with HWP may only be accessed after HWP is enabled, with the exception of 
IA32_HWP_INTERRUPT and MSR_PPERF. Accessing the IA32_HWP_INTERRUPT MSR requires only HWP is present 
as enumerated by CPUID but does not require enabling HWP.
IA32_PM_ENABLE is a package level MSR, i.e. writing to it from any logical processor within a package affects all 
logical processors within that package.

14.4.3 

HWP Performance Range and Dynamic Capabilities

The OS reads the IA32_HWP_CAPABILITIES MSR to comprehend the limits of the HWP-managed performance 
range as well as the dynamic capability, which may change during processor operation. The enumerated perfor-
mance range values reported by IA32_HWP_CAPABILITIES directly map to initial frequency targets (prior to work-
load-specific frequency optimizations of HWP). However the mapping is processor family specific.
The layout of the IA32_HWP_CAPABILITIES MSR is shown in Figure 14-5. The bit fields are described below: 

Highest_Performance (bits 7:0, RO) — Value for the maximum non-guaranteed performance level.

Guaranteed_Performance (bits 15:8, RO) — Current value for the guaranteed performance level. This 
value can change dynamically as a result of internal or external constraints, e.g. thermal or power limits.

Most_Efficient_Performance (bits 23:16, RO) — Current value of the most efficient performance level. 
This value can change dynamically as a result of workload characteristics.

Figure 14-4.  IA32_PM_ENABLE MSR

Figure 14-5.  IA32_HWP_CAPABILITIES Register 

63

0

Reserved

1

HWP_ENABLE

Reserved

63

0

Reserved

24

7

8

15

16

23

31

32

Most_Efficient_Performance

Guaranteed_Performance
Highest_Performance

Lowest_Performance