Maintaining historical power level metadata for dynamic voltage and frequency scaling of processor instructions is disclosed. A power predictor receives, from a power controller that controls voltage and/or frequency of a processor core of a processor device, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction. The power predictor, based on the processor core power quantifier, stores an instruction power level in association with the processor instruction. The power predictor subsequently determines that the processor instruction is to be executed by the processor core at a future point in time. The power predictor accesses the instruction power level previously stored in association with the processor instruction. The power predictor, prior to the processor instruction being executed by the processor core, communicates to the power controller a proposed power level based on the instruction power level.
|
9. A processor device comprising:
a processor core;
a power controller to control voltage and/or frequency of the processor core; and
a power predictor;
wherein the power predictor is to:
receive, from the power controller, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction;
store, based on the processor core power quantifier, an instruction power level in association with the processor instruction;
subsequently determine that the processor instruction is to be executed by the processor core at a future point in time;
access the instruction power level previously stored in association with the processor instruction; and
prior to the processor instruction being executed by the processor core, communicate, to the power controller, a proposed power level based on the instruction power level.
17. A non-transitory computer-readable storage medium that includes executable instructions to cause a power predictor of a processor device to:
receive, from a power controller that controls voltage and/or frequency of a processor core, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction;
store, based on the processor core power quantifier, an instruction power level in association with the processor instruction;
subsequently determine that the processor instruction is to be executed by the processor core at a future point in time;
access the instruction power level previously stored in association with the processor instruction; and
prior to the processor instruction being executed by the processor core, communicate, to the power controller, a proposed power level based on the instruction power level.
1. A method comprising:
receiving, by a power predictor from a power controller that controls voltage and/or frequency of a processor core of a processor device, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction;
storing, by the power predictor based on the processor core power quantifier, an instruction power level in association with the processor instruction;
subsequently determining, by the power predictor, that the processor instruction is to be executed by the processor core at a future point in time;
accessing the instruction power level previously stored in association with the processor instruction; and
prior to the processor instruction being executed by the processor core, communicating, by the power predictor to the power controller, a proposed power level based on the instruction power level.
2. The method of
determining a particular cache block of a plurality of cache blocks in a memory cache that corresponds to the processor instruction, each cache block comprising data that identifies a respective processor instruction and metadata about the respective processor instruction; and
storing, in metadata of the particular cache block, the instruction power level.
3. The method of
6. The method of
7. The method of
8. The method of
receiving, by the power controller, the proposed power level;
determining that the processor core is executing at a power level that differs from the proposed power level; and
instructing the processor core to execute at the proposed power level.
10. The processor device of
determine a particular cache block of a plurality of cache blocks in a memory cache that corresponds to the processor instruction, each cache block comprising data that identifies a respective processor instruction and metadata about the respective processor instruction; and
store, in metadata of the particular cache block, the instruction power level.
11. The processor device of
12. The processor device of
13. The processor device of
14. The processor device of
15. The processor device of
16. The processor device of
receive, by the power controller, the proposed power level;
determine that the processor core is executing at a power level that differs from the proposed power level; and
instruct the processor core to execute at the proposed power level.
18. The non-transitory computer-readable storage medium of
determine a particular cache block of a plurality of cache blocks in a memory cache that corresponds to the processor instruction, each cache block comprising data that identifies a respective processor instruction and metadata about the respective processor instruction; and
store, in metadata of the particular cache block, the instruction power level.
19. The non-transitory computer-readable storage medium of
20. The non-transitory computer-readable storage medium of
receive, by the power controller, the proposed power level;
determine that the processor core is executing at a power level that differs from the proposed power level; and
instruct the processor core to execute at the proposed power level.
|
Modern processors utilize dynamic voltage and frequency scaling (DVFS) to adjust operating points to workload.
The examples disclosed herein maintain an instruction power level that is associated with the execution of a processor instruction. It is subsequently determined that the processor instruction is to be executed by the processor core at a future point in time. The instruction power level is obtained and provided to a power controller that controls the voltage and/or frequency of the processor core prior to the processor instruction being executed to allow the power controller to initiate a power level transition even prior to the execution of the processor instruction.
In one example a method is provided. The method includes receiving, by a power predictor from a power controller that controls voltage and/or frequency of a processor core of a processor device, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction. The method further includes storing, by the power predictor based on the processor core power quantifier, an instruction power level in association with the processor instruction. The method further includes subsequently determining, by the power predictor, that the processor instruction is to be executed by the processor core at a future point in time. The method further includes accessing the instruction power level previously stored in association with the processor instruction. The method further includes, prior to the processor instruction being executed by the processor core, communicating, by the power predictor to the power controller, a proposed power level based on the instruction power level.
In another implementation a processor device is disclosed. The processor device includes a processor core and a power controller to control voltage and/or frequency of the processor core. The processor device further includes a power predictor, wherein the power predictor may receive, from the power controller, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction. The power predictor may further store, based on the processor core power quantifier, an instruction power level in association with the processor instruction. The power predictor may further subsequently determine that the processor instruction is to be executed by the processor core at a future point in time. The power predictor may further access the instruction power level previously stored in association with the processor instruction and, prior to the processor instruction being executed by the processor core, communicate, to the power controller, a proposed power level based on the instruction power level.
In another implementation a non-transitory computer-readable storage medium is disclosed. The non-transitory computer-readable storage medium includes executable instructions to cause a power predictor of a processor device to receive, from a power controller that controls voltage and/or frequency of a processor core, a processor core power quantifier that corresponds to a voltage or frequency of the processor core while executing a processor instruction. The instructions further cause the power predictor to store, based on the processor core power quantifier, an instruction power level in association with the processor instruction. The instructions further cause the power predictor to subsequently determine that the processor instruction is to be executed by the processor core at a future point in time. The instructions further cause the power predictor to access the instruction power level previously stored in association with the processor instruction, and prior to the processor instruction being executed by the processor core, communicate, to the power controller, a proposed power level based on the instruction power level.
Individuals will appreciate the scope of the disclosure and realize additional aspects thereof after reading the following detailed description of the examples in association with the accompanying drawing figures.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure and, together with the description, serve to explain the principles of the disclosure.
The examples set forth below represent the information to enable individuals to practice the examples and illustrate the best mode of practicing the examples. Upon reading the following description in light of the accompanying drawing figures, individuals will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
Any flowcharts discussed herein are necessarily discussed in some sequence for purposes of illustration, but unless otherwise explicitly indicated, the examples are not limited to any particular sequence of steps. The use herein of ordinals in conjunction with an element is solely for distinguishing what might otherwise be similar or identical labels, such as “first message” and “second message,” and does not imply a priority, a type, an importance, or other attribute, unless otherwise stated herein. The term “about” used herein in conjunction with a numeric value means any value that is within a range of ten percent greater than or ten percent less than the numeric value. As used herein and in the claims, the articles “a” and “an” in reference to an element refers to “one or more” of the element unless otherwise explicitly specified. The word “or” as used herein and in the claims is inclusive unless contextually impossible. As an example, the recitation of A or B means A, or B, or both A and B.
Modern processors utilize dynamic voltage and frequency scaling (DVFS) to adjust operating points to workload. It can take a period of time for the state of a processor core to change from one voltage or frequency to another voltage or frequency. The examples disclosed herein maintain an instruction power level that is associated with the execution of a processor instruction. It is subsequently determined that the processor instruction is to be executed by the processor core at a future point in time. The instruction power level is obtained and provided to a power controller that controls the voltage and/or frequency of the processor core. The power controller receives the instruction power level and determines if the current power level is consistent with the instruction power level associated with the processor instruction to be imminently executed, and if not, the power controller can initiate a power level transition even prior to the execution of the processor instruction.
The processor device 12 includes a power controller 24 that controls voltage and/or frequency of the processor core 14 via power instructions 25. The power controller 24 may control the voltage and/or frequency through one or more dynamic voltage and frequency scaling (DVFS) states, each state corresponding to a different voltage and/or frequency. The power controller 24 dynamically determines the power instructions 25 at an instant in time based on one or more system parameters 26, which may include, by way of non-limiting example, a temperature of the one or more processor cores 14, a total electrical current usage by the one or more processor cores 14, an instantaneous workload experienced by the one or more processor cores 14, and the like. The particular system parameters 26 utilized by the power controller 24 may differ depending on a manufacturer and/or design of the processor device 12.
The processor device 12 also includes a power predictor 28 that operates to provide proposed power levels to the power controller 24 for processor instructions that are to be imminently executed by the processor core 14 based on previous power states of the processor core 14 when executing the same processor instructions.
An example of an operation of the power predictor 28 in accordance with one implementation will now be discussed. The power predictor 28 continuously receives information from a branch predictor 30 identifying processor instructions that are to be executed by the processor core 14 at an imminent future point in time. The power predictor 28 also receives information 32 regarding what processor instructions are currently being executed. In this implementation, the power predictor 28 receives information that identifies the particular cache block 18 that is being executed, although it is apparent other information could be provided to the power predictor 28 to identify processor instructions that are currently being executed. In this example, the power predictor 28 determines that the processor instructions 20 of the cache block 18-N are being executed. The power predictor 28 also continuously receives, from the power controller 24, a real-time processor core power quantifier 34 that corresponds to a voltage or frequency of the processor core 14 while executing the processor instructions 20 contained in the cache block 18-N. The processor core power quantifier 34 may take any form, and in some implementations, may comprise a particular DVFS state of a plurality of possible DVFS states to which the processor core 14 can be set by the power controller 24. The components discussed herein, such as the power predictor 28 and the power controller 24 may be implemented in any desired manner, such as in silicon, firmware, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or programmable processor devices.
Referring now to
Referring now to
In this example the power predictor 28 stores the instruction power level in the branch instruction record 42 corresponding to the processor branch instruction that immediately preceded the execution of the corresponding processor instructions. In some examples, each branch instruction record 42 may include some function, such as, by way of non-limiting example, a bloom filter, that receives a plurality of instruction power levels over time and, upon request, provides a particular instruction power level to the power predictor 28. In particular, the power predictor 28 may associate a bloom filter with each branch instruction record 42. The bloom filter is populated over time. The bloom filter is then interrogated to determine which instruction power level should be provided to the power controller 24. In some implementations, a secondary prediction circuit may determine whether the bloom filter is frequently returning incorrect predictions, in which case the bloom filter may be flushed (causing it to be repopulated) or temporarily disabled.
When the branch predictor 30 determines that a particular branch instruction is to be imminently executed, the power predictor 28 accesses the branch instruction record 42 that corresponds to the branch instruction, retrieves an instruction power level from the branch instruction record 42, and provides a proposed power level to the power controller 24 prior to execution of the branch instruction by the processor core 14.
Individuals will recognize improvements and modifications to the preferred examples of the disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.
Patent | Priority | Assignee | Title |
11640194, | Jun 29 2021 | Red Hat, Inc.; Red Hat, Inc | Coordinating dynamic power scaling of agents based on power correlations of agent instructions |
Patent | Priority | Assignee | Title |
10775873, | Feb 13 2015 | TAHOE RESEARCH, LTD | Performing power management in a multicore processor |
7840825, | Oct 24 2006 | International Business Machines Corporation | Method for autonomous dynamic voltage and frequency scaling of microprocessors |
8495300, | Mar 03 2010 | ATI Technologies ULC | Cache with reload capability after power restoration |
9015504, | Aug 30 2004 | Texas Instruments Incorporated | Managing power of thread pipelines according to clock frequency and voltage specified in thread registers |
20050132243, | |||
20130138977, | |||
20140068285, | |||
JP5694735, | |||
KR101863578, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jan 28 2021 | Red Hat, Inc. | (assignment on the face of the patent) | / | |||
Jan 28 2021 | MASTERS, JONATHAN C | Red Hat, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 055065 | /0551 |
Date | Maintenance Fee Events |
Jan 28 2021 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Date | Maintenance Schedule |
Apr 19 2025 | 4 years fee payment window open |
Oct 19 2025 | 6 months grace period start (w surcharge) |
Apr 19 2026 | patent expiry (for year 4) |
Apr 19 2028 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 19 2029 | 8 years fee payment window open |
Oct 19 2029 | 6 months grace period start (w surcharge) |
Apr 19 2030 | patent expiry (for year 8) |
Apr 19 2032 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 19 2033 | 12 years fee payment window open |
Oct 19 2033 | 6 months grace period start (w surcharge) |
Apr 19 2034 | patent expiry (for year 12) |
Apr 19 2036 | 2 years to revive unintentionally abandoned end. (for year 12) |