Windows 7 processor power management functional overview
Updated: October 19, 2012
This topic provides an overview of the implementation of the processor power management (PPM) functionality and policy control for Windows 7.
This information applies to the following operating systems:
- Windows Server 2008 R2
- Windows 7
The responsibility for PPM is divided between the platform firmware and components of the operating system, as follows:
- System firmware (ACPI BIOS)
- Windows kernel power manager
- Windows processor drivers
The following figure shows each of these components. Each component is described in more detail in the following sections.
The system firmware is responsible for including the ACPI BIOS tables that contain the ACPI processor objects that describe the system's PPM capabilities and controls. The ACPI BIOS tables can also contain optional ACPI processor objects that describe multiprocessor domain dependencies or support for cooperative performance state management (PCC). The system firmware can dynamically update the PPM capabilities based on certain system events, such as AC/DC power source transitions.
Details about the required and optional ACPI processor objects for Windows 7 are provided in Implementing Processor Power Management for Windows 7.
The Windows kernel power manager is responsible for the following:
- Managing and applying processor power policy.
- Calculating the required processor power state transitions.
- Applying any constraints due to thermal conditions.
Processor power policy is owned and managed by the Windows kernel power manager. The power manager is responsible for choosing the correct processor state (the “target” state) based on CPU usage and other factors, depending on the PPM technology that is involved. The power manager then directs the appropriate processor state transition through a direct-call interface to the processor driver. The processor driver is responsible for invoking the actual state transition mechanism on the processor or other platform hardware as required.
Processor drivers in Windows are used to abstract the specific differences of processor designs from various processor vendors from the operating system. For example, processor drivers might contain processor-specific routines to determine the presence of PPM capabilities and might use a model-specific register (MSR) to invoke PPM state transitions directly on a processor.
Processor drivers in Windows are responsible for the following:
- Enumerating the PPM capabilities of the system.
- Validating that the PPM capabilities are described correctly and that they are present in system hardware.
- Passing the supported PPM capabilities to the kernel power manager.
- Invoking processor power state transitions on the appropriate hardware as directed by the kernel power manager.
Loading the correct processor driver
Processor objects are described in the ACPI namespace and are enumerated by the Windows ACPI interpreter. Windows uses the information that is obtained from the CPUID instruction to generate the correct hardware device ID during processor enumeration. This enables the system to load the correct processor driver for the processors that are installed in the system. If a specific match is not found, the generic processor driver, Processr.sys, is used. The specific processors that Windows supports can be seen by examining the Cpu.inf file that is located in the %SYSTEMDRIVE%\Windows\Inf directory of a Windows installation.
The following table lists the processor drivers that are included in Windows 7.
Windows 7 Processor Driver Support
|CPU vendor||Supported processor model/family||Driver name|
Mobile Pentium 4 processor that supports Hyper-Threading Technology
Pentium M Core family
|-||Any processor not listed above||Processr.sys|
Microsoft provides a generic processor driver, Processr.sys, that can be used on any Windows 7–compatible system or processor type, with the following requirements:
- The ACPI 2.0 _PSS and _PCT processor objects must be present in the ACPI namespace.
- The _PCT Performance Control object must describe the PERF_CTRL and PERF_STATUS control and status registers in system I/O space.
Optionally, the Microsoft-defined Extended PSS (XPSS) object can be used with the generic processor driver to enable the use of ACPI Functional Fixed Hardware (FFH) controls for the PERF_CTRL and PERF_STATUS registers. For more information about implementing XPSS, see the Extended PSS ACPI Method Specification.
Note The processor drivers that provided native PPM support for AMD K7 family processors and Transmeta Crusoe family processors in earlier versions of Windows have been removed from Windows 7.