background image

14-14 Vol. 3B

POWER AND THERMAL MANAGEMENT

14.5.2 

Package level Enabling HDC

The layout of the IA32_PKG_HDC_CTL MSR is shown in Figure 14-12. IA32_PKG_HDC_CTL is a writable MSR from 
any logical processor in a package. The bit fields are described below: 

HDC_PKG_Enable (bit 0, R/W) — Software sets this bit to enable HDC operation by allowing the processor 
to force to idle all “HDC-allowed” (see Figure 14.5.3) logical processors in the package. Clearing this bit 
disables HDC operation in the package by waking up all the processor cores that were forced into idle by a 
previous ‘0’-to-’1’ transition in IA32_PKG_HDC_CTL.HDC_PKG_Enable. This bit is writable only if 
CPUID.06H:EAX[bit 13] = 1. Default = zero (0). 

Bits 63:1 are reserved and must be zero.

After processor support is determined via CPUID, system software can enable HDC operation by setting 
IA32_PKG_HDC_CTL.HDC_PKG_Enable to 1. At reset, IA32_PKG_HDC_CTL.HDC_PKG_Enable is cleared to 0. A 
'0'-to-'1' transition in HDC_PKG_Enable allows the processor to force to idle all HDC-allowed (indicated by the non-
zero state of IA32_PM_CTL1[bit 0]) logical processors in the package. A ‘1’-to-’0’ transition wakes up those HDC 
force-idled logical processors. 
Software can enable or disable HDC using this package level control multiple times from any logical processor in the 
package. Note the latency of writing a value to the package-visible IA32_PKG_HDC_CTL.HDC_PKG_Enable is 
longer than the latency of a WRMSR operation to a Logical Processor MSR (as opposed to package level MSR) such 
as: IA32_PM_CTL1 (described in Section 14.5.3). Propagation of the change in 
IA32_PKG_HDC_CTL.HDC_PKG_Enable and reaching all HDC idled logical processor to be woken up may take on 
the order of core C6 exit latency.

14.5.3 

Logical-Processor Level HDC Control

The layout of the IA32_PM_CTL1 MSR is shown in Figure 14-13. Each logical processor in a package has its own 
IA32_PM_CTL1 MSR. The bit fields are described below: 

DB0H

Y

IA32_PKG_HDC_CTL

Package Enable/Disable HDC.

DB1H

Y

IA32_PM_CTL1

Per-logical-processor select control to allow/block HDC forced idling. 

DB2H

Y

IA32_THREAD_STALL

Accumulate stalled cycles on this logical processor due to HDC forced idling.

653H

N

MSR_CORE_HDC_RESIDENCY

Core level stalled cycle counter due to HDC forced idling on one or more 

logical processor.

655H

N

MSR_PKG_HDC_SHALLOW_RE

SIDENCY

Accumulate the cycles the package was in C2

1

 state and at least one logical 

processor was in forced idle

656H

N

MSR_PKG_HDC_DEEP_RESIDE

NCY

Accumulate the cycles the package was in the software specified Cx

1

 state 

and at least one logical processor was in forced idle. Cx is specified in 

MSR_PKG_HDC_CONFIG_CTL.

652H

N

MSR_PKG_HDC_CONFIG_CTL

HDC configuration controls

NOTES:

1. The package “C-states” referred to in this section are processor-specific C-states.

Figure 14-12.  IA32_PKG_HDC_CTL MSR

Table 14-2.  Architectural and non-Architecture MSRs Related to HDC

63

0

Reserved

1

HDC_PKG_Enable

Reserved