Power-Saving Mode Control with Dynamically-Controlled Access
Publication Date: 2014-Oct-23
The IP.com Prior Art Database
Disclosed here is a power saving mode instruction and control register that enable the hypervisor to allow the OS and/or an application to enter power saving mode in a controlled manner. The actions that can be performed by the OS and/or application can be dynamically changed by the hypervisor as the needs of the system change.
Page 01 of 4
Power consumption is a major concern in processor design due to today's high level of integration, thus modern processors employ all known techniques in order to minimize power consumption. Power may be conserved in various ways, including decreasing clock speeds, turning off all unneeded facilities, stopping execution entirely, or taking some other action.
In order to enable software to assist in power savings, processors have included various "power-saving mode" instructions. Such instructions include halt, mwait, and monitor , doze, nap, sleep, and rvwinkle , and others. The privilege level of the programs that are authorized to use these instructions is either fixed by the architecture or configurable at initialization, and cannot be changed thereafter.
In a multi-threaded processor that supports virtualization, however, there is a need to modify the privilege level of the programs that are authorized to use these instructions after initial configuration and during normal operations. For example, at times when there is only one partition executing on all threads of the processor, it may be desirable to allow the operating system to execute the instructions. However, when there is more than one partition executing on the processor, it is typically necessary to restrict access to the power-saving mode instructions to a hypervisor or other high-privileged program since some power saving levels may affect more than one partition. It may also be desirable to allow an application to have limited access to the power-saving mode instructions under certain circumstances. In such situations, however, it is usually necessary to restrict the actions performed by the application or operating system to a subset of the actions available to the hypervisor.
Since today's power-saving mode instructions are not capable of being configured to be available to selectable privilege levels after initialization, these controls are inadequate to support a virtualized system in
which the privilege level of the instructions needs to vary. For example, if initially a processor has multiple partitions simultaneously executing on various threads, then it is necessary to allow only the hypervisor to use the instructions. Sometime later, however, there may be only a single partition executing on the processor, and during this time it may be desirable to allow the operating system, or even an application, to use the instructions. Existing mechanisms do not allow this since the privilege level of the instructions cannot be changed after initialization. This prevents the operating system from using the instructions in cases in which they were initially hypervisor-privileged, which is the normal situation. In order to enter power-saving mode with these systems, therefore, the operating system needs to perform a system call in order to request the hypervisor to put the thread in power-saving mode. This severely impacts performance and also increases...