A computing device may include a plurality of components, such as a processor, memory, etc. Each component may be allocated a certain amount of power for operation.
Power budget management of a computing device may rely on pre-calculated power budget profiles stored in a power budget database. Each of the power budget profiles may correspond to a possible computer usage scenario contemplated by the engineers. Once stored in the power budget database, the pre-calculated power budget profiles are fixed and cannot be modified.
This disclosure provides a mechanism for learning different power usage scenarios of a user and dynamically allocating power between power consuming devices (such as, CPU, GPU, and peripheral devices) based on such actual usage scenarios, so as to improve computer performance and user experiences. By logging and analyzing the usage behavior pattern when power overuse events are triggered, power budget profiles can be automatically calculated and updated, thereby constantly approaching to the optimized power allocation for each usage scenario.
As shown in
In various examples, first and second power consuming device 120 and 123 can be a random-access memory (RAM) or volatile memory, a read-only memory (ROM) or non-volatile memory, a graphics processing unit (GPU), and a peripheral device. ROM may be electrically erasable and programmable/reprogrammable. GPU may be a dedicated/discrete GPU (dGPU) or an integrated GPU (iGPU). The peripheral device may be a type-C peripheral device connected to the computing device 100 through, for example, a type-C universal serial bus (USB) interface. In some examples, computing device 100 may include additional power consuming devices connected thereto.
In Step 220, after computing device 100 has been powered on for some time, processor 110 retrieves a power budget profile of computing device 100 from database 202. In one example, processor 110 can retrieve the power budget profile periodically (e.g., once every week or every two weeks) or as needed (e.g., once database 202 exceeds a certain size). The power budget profile can be determined based on respective average and maximum power weights associated with processor 110 and other power consuming devices to be further detailed below. In one example, database 202 is stored in non-volatile memory 130. In other examples, database 202 can be stored in a local storage device (e.g., a hard drive) included in computing device 100 or a remote storage device communicably connected to computing device 100 via a computer network.
In Step 230, processor 110 compares the power budget profile with a previously used or default power budget profile, and determines whether the power budget profile is different from and thus new with respect to the previously used or default power budget profile.
In Step 240, if the power budget profile is new, processor 110 overrides the previously used or default power budget profile in volatile memory 120 using the new power budget profile, and allocates electric power to processor 110 and other power consuming devices using the new power budget profile.
In Step 250, if the power budget profile is not new, processor 110 continues to measure and monitor the power consumption of each power consuming device of computing device 100.
In Step 260, processor 110 determines whether a total power consumption of computing device 100 exceeds a threshold value, i.e., whether a power surge or agency event occurs. In one example, a power surge event occurs when a total power consumption of computing device 100 exceeds a first threshold value (e.g., 70 W), while a power agency event occurs when a total power consumption of computing device 100 exceeds a second threshold value (e.g., 80 W) greater than the first threshold value.
In Step 270, if a power surge or agency event occurs at a time point T (or a VPM event is triggered), processor 110 stores the power consumption information of each power consuming device at time T in database 202 as a power overuse record, and returns to Step 250. In one example, the power consumption information includes the Watt value of each power consuming device measured when the VPM event is triggered. The power consumption information of each power consuming device at different power surge or agency events are collected for a period of time in database 202 as a power overuse log including a plurality of power overuse records. The power overuse log can be analyze using a self-study adaptive power budget engine 300 to determine another power budget profile based on the collected power consumption information. In one example, self-study adaptive power budget engine 300 can be implemented as instructions stored in non-volatile memory 130 and executable by processor 110.
In Step 320, at time T1 (e.g., one week after computing device 100 is powered on), engine 300 retrieves the collected power overuse log from database 202.
In Step 330, engine 300 determines whether the collected power overuse log includes a sufficient quantity of power overuse records. In one example, if the collected power overuse log includes five or less power overuse records, engine 300 determines that insufficient power overuse records are collected and returns to Step 310.
In Step 340, if more than five power overuse records are in the power overuse log, engine 300 calculates a new power budget profile based on the power overuse records collected in the power overuse log in view of an existing power budget profile. In one example, computing device 100 includes two power consuming devices A and B. A percentage power difference for power consuming device A can be calculated using below formula:
PowerDifference_A(T1)=(GreatestPower_A(T1)−AvgPower_A)/AvgPower_A,
where PowerDifference_A(T1) denotes the percentage power difference of power consuming device A at time T1, GreatestPower_A(T1) denotes the greatest power consumption of power consuming device A found in the power overuse log retrieved at time T1, and AvgPower_A denotes the average power weight assigned to power consuming device A in the original power budget profile. The percentage power difference for power consuming device B can be similarly calculated using the same formula.
In one example, a new maximum power weight and a new average power weight for power consuming device A can be calculated using below formula:
NewMaxPower_A=MaxPower_A+GreatestWeight_A, and
NewAvgPower_A=MaxPower_A+GreatestWeight_A,
where NewMaxPower_A denotes the new maximum power allocated to power consuming device A, MaxPower_A denotes the original maximum power allocated to power consuming device A, and GreatestWeight_A=GreatestPower_A(T1)−AvgPower_A.
In one example, a new maximum power weight and a new average power weight for power consuming device B can be calculated using below formula:
NewMaxPower_B=MaxPower_B−TakenPower_B, and
AvgPower_B=AvgPower_B−TakenPower_B,
where NewMaxPower_B denotes the new maximum power allocated to power consuming device B, MaxPower_B denotes the original maximum power allocated to power consuming device B, and TakenPower_B denotes the power taken away from power consuming device B for power consuming device A. As a result, the new power budget profile can be created by updating the existing power budget profile with the new maximum and average power weights of power consuming devices A and B.
In the example of
As shown in
As shown in
Some or all of the method steps and/or functions described above may be implemented as computer readable instructions executable by a processor and stored in a non-transitory computer readable memory or storage medium, where the term “non-transitory” does not encompass transitory propagating signals. Such computer readable instructions may exist as a software program in form of source code, object code, executable code, or other formats.
As used herein, Super Input/Output (super I/O or SIO) refers to an integrated circuit hardware on a computer motherboard or an expansion card that handles slower and less prominent input/output devices, such as, keyboard and mouse. In addition, a basic input/output system (BIOS) refers to hardware or hardware and instructions to initialize, control, or operate a computing device prior to execution of an operating system (OS) of the computing device. Instructions included within a BIOS may be software, firmware, microcode, or other programming that defines or controls functionality or operation of a BIOS. In one example, a BIOS may be implemented using instructions, such as platform firmware of a computing device, executable by a processor. A BIOS may operate or execute prior to the execution of the OS of a computing device. A BIOS may initialize, control, or operate components such as hardware components of a computing device and may load or boot the OS of computing device.
In some examples, a BIOS may provide or establish an interface between hardware devices or platform firmware of the computing device and an OS of the computing device, via which the OS of the computing device may control or operate hardware devices or platform firmware of the computing device. In some examples, a BIOS may implement the Unified Extensible Firmware Interface (UEFI) specification or another specification or standard for initializing, controlling, or operating a computing device.
For the purposes of describing and defining the present disclosure, it is noted that terms of degree (e.g., “substantially,” “slightly,” “about,” “comparable,” etc.) may be utilized herein to represent the inherent degree of uncertainty that may be attributed to any quantitative comparison, value, measurement, or other representation. Such terms of degree may also be utilized herein to represent the degree by which a quantitative representation may vary from a stated reference (e.g., about 10% or less) without resulting in a change in the basic function of the subject matter at issue. Unless otherwise stated herein, any numerical values appeared in this specification are deemed modified by a term of degree thereby reflecting their intrinsic uncertainty.
Although various embodiments of the present disclosure have been described in detail herein, one of ordinary skill in the art would readily appreciate modifications and other embodiments without departing from the spirit and scope of the present disclosure as stated in the appended claims.