Configuring power level of central processing units at boot time

Techniques for allocating power budget to a central processing unit (CPU) of a computing device are described. According to an example of the present subject matter, an unloaded component is detected. The unloaded component remains undetected upon completion of a boot process of the computing device. Thereafter, a power budget allocated to the unloaded component is determined. The power budget may be based on the thermal design power (TDP) of the computing device. Based on the power budget, a power configuration of the CPU is changed from a default power level to a high-performance power level, wherein the default power level corresponds to the TDP of the computing device and the high-performance power level is a power level above the default power level and upto a maximum power level of the CPU.

BACKGROUND

Devices, such as smartphones, laptops, desktops, personal computers, and tablets, incorporate numerous components that generate heat during their operation. When a component, such as a processor of a device, operates under high workload, it may generate more heat than it generates during a normal operation. The heat is dissipated so as to maintain the temperature of the component within a predefined threshold. Accordingly, heat dissipating measures, such as heat-dissipating surfaces and cooling fans are incorporated in the devices.

DETAILED DESCRIPTION

Generally, power management in computing devices is achieved by allocating a power budget to components of a computing device for their operation. The allocation of the power budget to the components of the computing device ensures that a thermal design power (TDP) of the computing device is adhered to, TDP being a maximum power that can be dissipated by the computing device. Distribution of power budget between the components of the computing device is such that a sum of the power allocated to the individual components does not exceed the TDP.

The power budget allocated for an individual component within the computing device is generally reserved for the corresponding component alone and cannot be attributed to another component in case the former component is not present. For example, if 30 W is allocated to two hard-disk drives (HDD) of the computing device (15 W for one HDD), even when no HDD is loaded of or a single HDD is loaded, the unused allocated power budget remains reserved.

In a similar manner, a central processing unit (CPU) of the computing device is also made to operate at a default power level based on a power budget allocated to the CPU according to the TDP of the computing device. The default power level is often set significantly below a maximum power limit of the CPU to consistently achieve a rated frequency guaranteed by a manufacturer of the CPU. Also, since the default power level of the CPU is based on the ability of the computing device to dissipate heat, the default power level may often be defined for a worst-case scenario, such as a fan for the CPU having a low-rating. Accordingly, a significant margin may exist between the default power level and the maximum power level of the CPU.

Thus, the CPU may be operating at a default power level defined for TDP conformance assuming complete utilization of allocated power budget by the components, while the power budget allocated to the components of the computing device may not be utilized. In cases where power budget allocated to the components of a computing device is not utilized, for example, due to a component not being operational, operating the CPU at the default power level for TDP conformance may result in performance loss.

According to an example implementation of the present subject matter, techniques for configuring a power level of CPUs of computing devices, to minimize performance loss by the CPU are described. In an example, a CPU of a computing device is assigned a power level above a default power level set for TDP conformance based on the unutilized power budget allocated to the other components of the computing device.

In an example implementation, an unloaded component of the computing device is detected. The unloaded component may be understood as a component of the computing device that remains undetected by the computing device upon completion of a boot process of the computing device. Thereafter, a power budget allocated to the unloaded component of the computing device is determined. For example, the power budget may be allocated to the unloaded component based on a thermal design power (TDP) of the computing device. Based on the determined power budget of the unloaded component, a power configuration of a CPU of the computing device is changed from a default power level to a high-performance level. The default power level of the CPU of the computing device corresponds to the TDP of the computing device and the high-performance power level is a power level above the default power level and up to a maximum power level at which the CPU is capable of operating. As a result, the power budget of the unloaded component is not reserved and is provided to the CPU to increase the power level of the CPU. Increasing the power level of the CPU in turn results in faster processing of workloads by the CPU.

The above techniques are further described with reference toFIG.1toFIG.5. It should be noted that the description and the figures merely illustrate the principles of the present subject matter along with examples described herein and should not be construed as limiting the present subject matter. It is thus understood that various arrangements may be devised that, although not explicitly described or shown herein, embody the principles of the present subject matter. Moreover, all statements herein reciting principles, aspects, and implementations of the present subject matter, as well as specific examples thereof, are intended to encompass equivalents thereof.

FIG.1shows an example computing device100enabling allocation of a power level to a central processing unit (CPU)102of the computing device100at boot time, according to an example implementation of the present subject matter. Examples of the computing device100include, but are not limited to, an electronic device, such as a desktop computer, a personal computer, a laptop, a smartphone, a personal digital assistant (PDAs), and a tablet.

In an example, the CPU102of the computing device100may be implemented as microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. Among other capabilities, the CPU102is configured to fetch and execute computer-readable instructions stored in a memory of the computing device100(not shown inFIG.1). The computing device100may comprise other components, such as a Random-Access Memory (RAM), graphics processor, hard disk drive (not shown in this figure).

The computing device100further includes a basic input and output system (BIOS)104communicatively coupled the CPU102. The BIOS104performs a boot process to prepare the computing device100for use. When the computing device100is powered ON, the CPU102of the computing device100is initialized, in other words, provided with electrical power which invokes the BIOS104. The BIOS104, thereafter, loads an operating system (OS) of the computing device100and interfaces the components of the computing device100with the OS to prepare the computing device100for use.

In accordance with an example implementation of the computing device100, the BIOS104also comprises configuration information for power management of the computing device100. In an example, for power management of the computing device100, a power budget is allocated to the components of the computing device100. The power budget may be based on a thermal design power (TDP) of the computing device100. The TDP of the computing device100is an amount of power that can be dissipated by a cooling system of the computing device100. In an example, the TDP of a computing device100may be based on a rating of a fan of the CPU102of the computing device100. Accordingly, the BIOS104comprises the power level assigned to the components based on the power budget allocated to the respective components.

Further, based on the TDP of the computing device100, a default power level may also be defined for the CPU102. The CPU102may have a clock frequency or frequency of operation corresponding to the default power level. In an example implementation, the default power level may be selected from amongst a plurality of configurable power levels of the CPU102, namely P0-Pn, wherein, in an example, the P0 state may be the default power level. The power level P1-Pn may be higher than the default power level and may have higher corresponding clock frequencies. For example, the default power level of the CPU102may be 95 W (P0), while the CPU102may have other configurable higher power levels, such as 101 W (P1), 105 W (P2) and so on. In an example, the clock frequency corresponding to the default power level (P0:95 W) maybe 2.5 GHz, while the clock frequency corresponding to the power level 101 w (P1) maybe 2.7 GHz and the clock frequency corresponding to the power level 105 W (P2) maybe 2.9 GHz

During the booting process, the BIOS104detects unloaded components of the computing device100. The unloaded component may be a component of the computing device that would remain undetected after completion of booting process. In other words, a component, which the BIOS104detects, would remain non-operational or not interface with the OS of the computing device100upon completion of the booting process, is identified to be an unloaded component. For example, if a hard disk drive is not coupled with the computing device, the hard disk drive would remain undetected after the completion of booting process or, in other words, may not interface with the OS after the completion of the booting process.

In accordance with an example implementation of the present subject matter, the BIOS104comprises a virtual power management (VPM) module106to determine a power budget allocated to the unloaded component of the computing device100. In an example, the VPM module106may reside in a memory of the BIOS104. In another example, the VPM module106may be implemented as separate hardware coupled to the BIOS104. The VPM module106may include routines, programs, objects, components, data structures, and the like, which perform particular tasks or implement particular abstract data types. The VPM module106may further include electronic circuitry or a combination of electronic circuitry and control programs that may control various functions as described herein.

In an example implementation, the VPM module106may configure a power level of the CPU102based on the power budget of the unloaded component. For example, if power budget corresponding to the unloaded component or, in other words, unused power, is found to exist in the computing device100, the VPM module106may change the default power level of the CPU102to a high-performance power level of the computing device100. The high-performance power level is higher than the default power level and is less than a maximum power level of the CPU102. In an example, the default power level of the CPU102may be 95 W and the high-performance power level of the CPU102may be 100 W while the maximum power level of the CPU maybe 105 W. In another example, the 100 W may be the default power level and the high-performance power level maybe 105 W.

FIG.2illustrates the computing device100, in accordance with another example implementation of the present subject matter. As described earlier, the computing device100comprises the CPU102that is coupled to the BIOS104to boot the computing device100.

The functions of the various elements shown in the figures, including any functional blocks labeled as “CPU”, may be provided through the use of dedicated hardware as well as hardware capable of executing software. When provided by a CPU, the functions may be provided by a single dedicated CPU, by a single shared CPU, or by a plurality of individual CPUs, some of which may be shared. Moreover, explicit use of the term “CPU” should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC), field-programmable gate array (FPGA), read-only memory (ROM) for storing software, non-volatile storage. Other hardware may also be included.

Apart from the CPU102and the BIOS104, the computing device100may also comprise various other components coupled to the CPU102via a system bus202. The system bus202may include a control bus, an address bus, and a data bus of the computing device100. The system bus202may be used for communicating between the components and the CPU102of the computing device100.

The computing device100may comprise an internal storage medium such as one or more hard disk drives (HDDs)204that may store various data including an operating system (OS) of the computing device100that the CPU102may execute. In an example, the HDDs204may be a Parallel Advanced Technology Attachment (PATA) HDD, a serial advanced technology attachment (SATA) HDD, small computer system interface (SCSI) HDD, solid-state drive (SSD) HDD or a combination thereof. In operation, from amongst the plurality of HDDs204, the computing device100may operate with any number of HDDs while the other HDDs may be unloaded. For example, considering that the computing device100comprises three HDDs, one HDD may be loaded while two HDDs may be unloaded.

Similarly, the computing device100may include random access memory (RAM) devices206to hold information related to running programs on the computing device100. In an example, the RAM devices206may include a Static RAM (SRAM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), single data rate synchronous dynamic ram (SDR SDRAM), double data rate synchronous dynamic RAM (DDR SDRAM), graphics double data rate synchronous dynamic RAM (GDDR SDRAM) etc., or any combination thereof.

The computing device100may employ a plurality of graphics processors208to perform the processing of complex and detailed images, animations, videos, etc.

Further, in an example, the computing device100may be a multiprocessor computing device100and the computing device100may employ additional CPUs210. For example, in a multiprocessor configuration of the computing device100, the computing device100may include a first CPU, hosting a first OS, and a second or an additional CPU, hosting a second OS, such that both the first and the second OS enable different functionalities in the computing device100.

The computing device100may also include a flash read-only memory (ROM)212as a rewriteable memory component to store information, such as firmware of the computing device100to allow periodic updates. In an example, the flash ROM212may store information that the BIOS104may need for facilitating booting of the computing device100. For example, the flash ROM212may store power management data of the components, such as the power budget of the various components.

In operation, when the computing device100is powered ON, the BIOS104is invoked to execute the booting process to prepare the computing device100for use. In the boot process, the BIOS104loads the OS of the computing device100into a RAM device206of the computing device100for execution by the CPU102and interfaces the components of the computing device100with the OS, such that the OS is provided control of the components. The BIOS104performs a series of actions to complete the booting process.

To initiate the booting process, the BIOS104performs a power-ON-self test (POST) operation to identify the loaded and the unloaded components of the computing device100and verify if the components are functioning properly. The unloaded components are the components which the BIOS104detects upon completion of POST to be non-operational or not interfaced with the computing device100. Accordingly, components that would not interface with the OS of the computing device100upon completion of the booting process, may be identified as the unloaded components. Similarly, the loaded components are the components that are operational, coupled to the computing device100and that are to be interfaced with the OS of the computing device100. In an example, a component may be determined to be unloaded component when the component is malfunctioned or not active, such that the component cannot be interfaced with the OS of the computing device100.

In an example, out of a first and a second HDDs of the computing device100, the first HDD may be coupled to the computing device100while the second HDD may be decoupled from the computing device100or may have been found to be non-responsive during POST, in that case the BIOS104may identify the second HDD as the unloaded component.

In another example, as already discussed above, there may be a plurality of additional CPUs210in the computing device100, wherein the plurality of additional CPUs210may have their own OS. In an operation, if the OS corresponding to an additional CPU is not initialized, the BIOS104may identify the additional CPU as the unloaded component. In yet another example, a graphics processor out of the plurality of the graphics processors208of the computing device100may not be loaded and may be identified as the unloaded component. Similarly, ‘n’ number of RAM devices206, from amongst the plurality of RAM devices206of the computing device100may be the unloaded components. Thus, in various example implementations of the present subject matter, different combinations of one or more loaded and unloaded components may be identified.

After the unloaded components are determined, the VPM module106determines a power budget corresponding to such unloaded components. Based on the power budget of the unloaded components, the VPM module106of the BIOS104changes a power configuration of the CPU102from the default power level to the high-performance power level. In an example, the CPU102may have configurable power levels, from P0-Pn, P0 being the default power level and the Pn being the maximum power level. In an example, the VPM module106of the BIOS104may change the power level of the CPU102from the default power level P0 to P1, P2 or Pn, based on the power budget of the unloaded components.

To change the power configuration of the CPU102, the VPM module106determines a power budget for the unloaded components. As explained earlier, the components have a power budget based on the TDP of the computing device100. The information about the power budget of the components may be stored in a flash ROM212. In another example, the power budget information may be stored in some other memory location which may be accessible to the BIOS104. The VPM module106of the BIOS104determines the power budget of the unloaded components. The power budget of an unloaded components is the power allocated for the unloaded component that would have been consumed had the unloaded components been loaded onto the computing device100. In an example, the VPM module106may determine the power budget of an HDD of a graphics processor that may be unloaded. Based on the determined power budget of the unloaded components, the BIOS104determines a high-performance power level for the CPU102and changes a power level of the CPU102of the computing device100from the default power level to the high-performance power level.

As mentioned previously, the CPU102may have more than one configurable power levels. In an example, the flash RAM212may store the details of the configurable power level of the CPU102. In an example, the configurable power levels may have associated operating parameters, such as operating temperature, operating frequency, maximum temperature, etc. For example, an 85 W (P0) power level of the CPU102may have an operating temperature of 40° C., operating frequency of 2.5 Ghz, a maximum temperature of 60° C. Similarly, a 100 W (P1) power level of the CPU102may have an operating temperature of 40° C., operating frequency of 2.5 Ghz, the maximum temperature of 60° C., in an example. The VPM module106of the BIOS104may access the flash ROM212to determine the high-performance power level for the CPU102based on the power budget of the unloaded components. Once the high-performance power level is determined, the VPM module106may change the power level of the CPU102from the default power level to the high-performance power level. In an example, to change the power level of the CPU102, the VPM module106may change a power level value in a model specific register (MSR) of the CPU102. The power level provided to the CPU102is based on the power level value mentioned in the MSR. Thus, in an example, to change the power level of the CPU102, the VPM module106may change the power level value in the MSR to a power level value corresponding to the high-performance level.

Considering an example, if the unloaded component is determined to be an HDD and the power budget corresponding to the HDD is 15 w, a default power level of the CPU102, which may be 85 w, for instance, may be revised to a high-performance level of about 100 W, (85 W+15 W).

The VPM module106changes the power level of the CPU102from the default power level to the high-performance level, such that the high-performance level corresponds to one of the higher configurable power levels of the CPU102. For example, the change in power level may be in proportion to the sum of the power budgets of the unloaded components. For example, if it is determined that two HDDs are unloaded and the power budget for one unloaded HDD is 15 W, the VPM module106may configure the power level of the CPU102from the default power level 85 W (P0) to a high-performance power level of 115 W (P2) (85 W+15 W+15 W). Thus, in this case, an intermediate power level of 100 W of the CPU102may be bypassed.

In situations where the CPU102has no higher configurable power level corresponding to the sum of the power budgets of the unloaded components, the closest higher configurable power level may be selected. For example, consider that the CPU102has configurable power levels of 85 W, 100 w, 115 W, 130 W and 145 W. If an HDD and a graphics processor, with a power budget of 20 W each are determined to be unloaded, the total power budget of the unloaded components is 40 W. In this case, assuming that the CPU102is operating at the default power level of 85 W, the high-performance power level, based on the unused power, may correspond to about 125 w (85 W+40 W). However, since the CPU102does not include a configurable power level corresponding to 125 W, the configurable power levels 115 W or 130 W may be selected.

After the power level of the CPU102is changed, the CPU102operates at a higher clock frequency corresponding to the high-performance power level. For example, if the CPU102is configured from the default power level of 85 W, 2.5 Ghz to a high-performance power level of 100 W, 2.7 Ghz, the CPU102would operate at 2.7 Ghz. High clock frequency operation increases the processing efficiency of the CPU102.

In an example, the VPM module106may change the power level configuration of the CPU102based on a hardware configuration of the computing device100. In one example implementation, based on the POST operation, once the BIOS104has detected the loaded and unloaded components, the BIOS104may ascertain a current hardware configuration of the computing device100. For example, the current hardware configuration may comprise a list of the loaded and the unloaded components. The current hardware configuration, indicative of the loaded and the unloaded components of the computing device100, may be stored in the flash ROM212by the BIOS104.

The BIOS104may compare the current hardware configuration with a previous hardware configuration wherein the previous hardware configuration may be indicative of the loaded and unloaded components of the computing device during a previous booting process. In an example, whenever the computing device100is booted up, the BIOS104may determine a hardware configuration of the computing device100and may store the determined hardware configuration in the flash ROM212or any other memory location as specified by the BIOS104. Thus, in an example, the previous hardware configuration mentioned above may be the hardware configuration that was stored in a previous booting up process of the computing device100. For the comparison, the BIOS104may retrieve the previous hardware configuration from the flash ROM212. Based on the comparison, the BIOS104determines a change in the current hardware configuration.

In an example, the components may have associated flags to indicate if a corresponding component is loaded or unloaded. For example, zero value of flag may indicate that the component is not loaded while a value 1 of the flag may indicate that the component is loaded. Thus, the hardware configuration may be a combination of the values of the flags for the components of the computing device100. The comparison may be done between the current hardware configuration and the previous hardware configuration based on the values of the flags allocated to components in the current hardware configuration and the previous hardware configuration. Thus, based on the comparison of the value of the flags, a change in the hardware configuration may be determined.

For example, it is possible that in the previous hardware configuration, two graphics processors were loaded while a single graphics processor is loaded in the current hardware configuration. Thus, a change in configuration may be indicative of the one graphics processor being an unloaded component in the current hardware configuration.

When comparison of the current hardware configuration with the previous hardware configuration reveals that the current hardware configuration is different from the previous hardware configuration, the VPM module106of the BIOS104may initiate change in the power level of the CPU102following the process explained above. However, if it is determined that the hardware configuration is the same as the previous hardware configuration, the VPM module106may not change the power level of the CPU102. Also, in cases where the change reveals a higher number of loaded components in the current hardware configuration as compared to the previous hardware configuration, the VPM module106may not change the power level of the CPU102. Accordingly, upon completion of the POST operation, if no change in the current hardware configuration occurs, the BIOS104proceeds to further execute the booting process.

To further execute the booting process, the BIOS104generates interrupt routines for the loaded components of the computing device100. Interrupts are signals sent to the CPU102by a component to request the OS to halt its current operation and perform operations indicated by the component. The interrupt routines generated by the BIOS104, interface the loaded components with the OS of the computing device100, by enabling the OS to recognize the interrupt signals when generated by the components. Based on the interrupt routines, the components may call the CPU102when needed to perform any operation. After the generation of the interrupt routines, the booting process is complete and the OS is interfaced with the loaded components such that the loaded components may communicate directly with the OS.

FIG.3illustrates a method300for allocating a power level to a central processing unit (CPU) of a computing device, according to an example implementation of the present subject matter. Although the method300may be implemented in a variety of electronic devices, for the ease of explanation, the present description of the example method300for configuring power level of the CPU is provided in reference to the above-described computing device100. The method300may be implemented by a processor(s) or computing device(s) through any suitable hardware, non-transitory machine-readable instructions, or combination thereof.

It may be understood that blocks of the method300may be performed by programmed computing devices. The blocks of the method300may be executed based on instructions stored in a non-transitory computer readable medium, as will be readily understood. The non-transitory computer readable medium may include, for example, digital memories, magnetic storage media, such as magnetic disks and magnetic tapes, hard drives, or optically readable digital data storage media.

Referring toFIG.3, at block302, at least one unloaded component of the computing device100is detected. In an example, the unloaded component is a component of the computing device100that remains undetected upon completion of a boot process of the computing device. As mentioned previously, the unloaded component may be a malfunctioning component or an unloaded component, such that the BIOS104of the computing device100does not interface the component with the OS of the computing device100during booting-up the computing device100. For example, in an operation, a hard disk drive may not be loaded and thus, when the booting process is completed, the hard disk drive may not be interfaced with the OS computing device100. In this case, the hard disk drive may be considered as the unloaded component. Similarly, a RAM and a graphics processor may the unloaded components in other examples.

At block304, a power budget allocated to at least one unloaded component is determined. The power budget of the unloaded component may be based on the TDP of the computing device100. For example, for the purpose of power management in the computing device100, various components of the computing device100may be allocated a power budget, such that when the components operate in accordance with the allocated of power budget, the heat generated in the computing device100is within the TDP limit. However, the unloaded component may not contribute to the heat generated in the computing device100.

At block306, a power configuration of the CPU102is changed based on the power budget corresponding to the at least one unloaded component, determined at block304. According to an example implementation, the power configuration of the CPU102is changed from a default power level to a high-performance power level, wherein the default power level is based on the TDP of the computing device100and the high-performance power level is the power level above the default power level and less than a maximum power level of the CPU102.

In an example, the CPU102may have multiple configurable power levels with the default power level being power level at which the CPU102operates upon being initialized. The default power level, however, may be revised to a high-performance power level, based availability of unused power budget of unloaded components of the computing device100.

FIG.4illustrates a method400of booting of a computing device, according to an example implementation of the present subject matter. Although the method400be implemented in a variety of electronic devices, for the ease of explanation, the present description of the example method400to boot the computing device is provided in reference to the above-described computing device100. The method400may be implemented by a processor(s) or computing device(s) through any suitable hardware, non-transitory machine-readable instructions, or combination thereof.

It may be understood that blocks of the method400may be performed by programmed computing devices. The blocks of the method400may be executed based on instructions stored in a non-transitory computer readable medium, as will be readily understood. The non-transitory computer readable medium may include, for example, digital memories, magnetic storage media, such as magnetic disks and magnetic tapes, hard drives, or optically readable digital data storage media.

Referring toFIG.4, at block402, a CPU102of the computing device100is initialized when the computing device100is powered ON. At this block, the BIOS104initializes the CPU102. At block404, the BIOS104performs a power-ON-self-test (POST) to ascertain a current hardware configuration of the computing device100, based on the POST. The current hardware configuration reveals loaded and unloaded components of the computing device100.

At block406, it is determined if the current hardware configuration includes more unloaded components in comparison to a previous hardware configuration. In an example, the previous hardware configuration may be the hardware configuration as determined and stored by the BIOS104in a previous booting process. If the detection made at the block406is in the affirmative, the method proceeds to block408. However, if it is determined, at block406, that the current hardware configuration is the same as the previous hardware configuration or includes more loaded components as the previous hardware configuration, the method proceeds to block410.

At block408, a power level of the CPU is changed from a default power level to a high-performance power level. As explained earlier, the VPM module106of the BIOS104changes the power level of the CPU from the default power level to the high-performance power level. In an example, there may be more than one high-performance power level and the VPM module106may configure the CPU102to a high-performance power level based on the power budget of the unloaded components. As explained earlier, to change the power level, the VPM module106may change a power level value mentioned in a model specific register of the CPU102. The VPM module106may change the power level value to a power level value corresponding to the high-performance power level. Thereafter, the method thereafter proceeds to block402. At block402, the CPU102would now be initialized to operate at a voltage defined in accordance with the high-performance power level.

Referring again to block406, if it is determined that the hardware configuration has changed such that the current hardware configuration has higher number of loaded components than the previous hardware configuration, the method proceeds to block410. At block410, the BIOS104stores the hardware configuration so as to use it during next boot up. In an example, the previous hardware configuration may be overwritten by the current hardware configuration when the current hardware configuration is different from the previous hardware configuration. The method thereafter proceeds to block412.

At block412, the BIOS104generates an interrupt routine for interfacing loaded components identified in the hardware configuration with the OS of the computing device100. The interrupt routine is used by the loaded components to call the OS when needed to perform any operation. Thereafter, the method proceeds to block414and the OS is booted with the CPU102, operating at the high-performance power level.

FIG.5illustrates a system environment500implementing a non-transitory computer-readable medium502for allocating power budget to a central processing unit (CPU) of a computing device at boot time, according to an example of the present subject matter. In an example implementation, the system environment500may be a computing device, such as the computing device100. The system environment500includes a processing resource504communicatively coupled to the non-transitory computer-readable medium502through a communication link506. In an example, the processor resource502fetches and executes computer-readable instructions from the non-transitory computer-readable medium502.

The non-transitory computer-readable medium502can be, for example, an internal memory device or an external memory device. In an example implementation, the communication link506may be a direct communication link, such as any memory read/write interface. In another example implementation, the communication link506may be an indirect communication link, such as a network interface. In such a case, the processing resource504can access the non-transitory computer-readable medium502through a network508. The network508may be a single network or a combination of multiple networks and may use a variety of different communication protocols.

The processing resource504and the non-transitory computer-readable medium502may also be communicatively coupled to data source(s)510. The data source(s)510may be used to store data, such as power configuration information comprising power budget data, details of the power level of the CPU of the computing device, in an example. In an example implementation, the non-transitory computer-readable medium502includes a set of computer-readable instructions for changing the power level of the computing device. The set of computer-readable instructions can be accessed by the processing resource504through the communication link506and subsequently executed to authorize the access to the capturing device.

In an example, the non-transitory computer-readable medium502may include a set of instructions implementing a virtual power management module106. The instructions implementing the virtual power management module106may, in one example, be a code executable to change, at boot time of the computing device, the power level of the computing device from a default power level to a high-performance power level.

In an example, the non-transitory computer-readable medium502may include a set of instructions that may, in one example, be executable by the by the processing resource504to determine a power budget corresponding to at least one unloaded component of the computing device, the unloaded component being a component of the computing device that remains unavailable to an OS of the computing device during a boot process of the computing device100of the computing device100. As discussed earlier, the unloaded component is a component of the computing device that remains undetected upon completion of the boot process and thus, the component would be unavailable to the OS of the computing device after the boot process is completed. In an example, the unloaded component may be a hard disk drive (HDD), a graphics processor, a RAM, etc. Further, as explained previously, the power budget allocated to the unloaded component is based on a thermal design power (TDP) of the computing device.

To determine the unloaded components of the computing device, in an example, the instructions may cause the processor resource504to perform a power-on self-test (POST). Based on the POST, the instructions may cause the processing resource504to determine a hardware configuration of the computing device indicative of the unloaded and loaded components of the computing device.

Further, the instruction may cause the processing resource504to compare the hardware configuration with a previous hardware configuration to detect a change in the hardware configuration due to any component being unloaded from the computing device or being rendered malfunctional. The instruction may thereafter cause the processing resource504to determine a power budget corresponding to the unloaded component. For example, the computing device may be a multiprocessor device and by comparing the hardware configuration with a previous hardware configuration, the processing resource may determine an additional CPU of the computing device to be the unloaded component (in the current hardware configuration) if an operating system corresponding to the additional CPU is uninitialized. In this example, the instruction may cause the processing resource to determine the power budget corresponding to the additional CPU.

After the power budget of the unloaded components is determined, the instructions implementing the VPM module may, in one example, may cause the processing resource504to allocate the power budget to the CPU of the computing device to change a power level configuration of the CPU from a default power level to a high-performance power level.

Thus, the methods and systems of the present subject matter provide for configuring the power level of a computing device based on unloaded components. Although implementations of configuring the power level have been described in a language specific to structural features and/or methods, it is to be understood that the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations for power management of computing devices.