US6636976B1 - Mechanism to control di/dt for a microprocessor - Google Patents
Mechanism to control di/dt for a microprocessor Download PDFInfo
- Publication number
- US6636976B1 US6636976B1 US09/608,748 US60874800A US6636976B1 US 6636976 B1 US6636976 B1 US 6636976B1 US 60874800 A US60874800 A US 60874800A US 6636976 B1 US6636976 B1 US 6636976B1
- Authority
- US
- United States
- Prior art keywords
- processor
- activity
- current change
- current
- functional unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime, expires
Links
- 230000007246 mechanism Effects 0.000 title abstract description 9
- 230000000694 effects Effects 0.000 claims abstract description 83
- 230000008859 change Effects 0.000 claims abstract description 65
- 230000003247 decreasing effect Effects 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims 2
- 230000001960 triggered effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 241000761456 Nops Species 0.000 description 2
- 108010020615 nociceptin receptor Proteins 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3237—Power saving characterised by the action undertaken by disabling clock generation or distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present invention relates to computers and, in particular, to mechanisms for controlling the rate at which power supply current changes in a microprocessor.
- Modern processors include extensive execution resources to support concurrent processing of multiple instructions.
- a processor typically includes one or more integer, floating point, branch, and memory execution units to implement integer, floating point, branch, and load/store instructions, respectively.
- integer and floating point units typically include register files to maintain data relatively close to the processor core.
- One drawback to providing a processor with extensive execution resources is that significant amounts of power are required to run them. Different execution units may consume more or less power and draw more or less current, depending on their size and the functions they implement, but the net effect of packing so much logic onto a relatively small process chip is to create the potential for significant power supply and power dissipation problems.
- Clock signals are typically delivered to the processor's execution resources through a clock distribution network.
- the clock signal is used to synchronize the charging and discharging of nodes in the processor logic between supply voltage levels, e.g, V cc and ground.
- the logic is designed to operate within specified ranges of these voltage levels, which are maintained by a regulated power supply. Sudden changes in the current drawn by the processor as functional units are gated on or off, can cause these supply voltages to vary. The voltage variations are due to the finite response time of the power supply as well as reactive (inductive and capacitive) elements in the power distribution network. If the voltage variations fall outside the specified range, they can damage circuits (for voltage excursions above a maximum safe value) or create errors (for voltage excursions below a level necessary to guarantee correct operation of the logic).
- the significance of these voltage excursions is determined by the rate at which the current provided to the processor by the power supply changes (“current change rate” or “di/dt”) and the electrical properties of the distribution network.
- current change rate depends on both the size of the current change and the time scale over which it occurs. The latter is determined by the operating frequency of the processor. The former depends on the amount of current consumed by the functional unit(s) being gated. For example, floating point multiply units are notoriously power-hungry execution resources in processors. The change in the processor's current demand as these units are gated on and off can move the reference voltage temporarily outside its specified range.
- processors offer no control over di/dt.
- One strategy contemplated for future processors forces a minimum level of activity to ensure that any current changes are relatively small.
- processor frequencies increase, the time interval over which these current changes occur decreases, and even small current changes may affect the supply voltages.
- power reduction strategies like clock-gating is increasing as processor frequencies (and power consumption) increase. Forcing minimum activity levels artificially raises power consumption levels, which partially offsets the benefits of clock gating.
- the present invention addresses these and other deficiencies of available power throttling mechanisms.
- FIG. 1 is a block diagram of one embodiment of a computer system in which the present invention is implemented.
- FIG. 2 is a block diagram of one embodiment of a processor that implements a current control unit in accordance with the present invention.
- FIG. 3 is a block diagram of one embodiment of the current control unit implemented by the processor of FIG. 2 .
- FIG. 4 is a schematic representation of a voltage level as a function of time, following a significant change in the current consumed by a processor.
- FIG. 5 is a block diagram representing one embodiment of the throttle circuit of FIG. 3 .
- FIG. 6 is a flowchart representing a method in accordance with the present invention for adjusting the activity level of a processor to reduce current changes in the processor.
- FIG. 1 is a block diagram of one embodiment of a computer system 100 in which the present invention may be implemented.
- Computer system 100 includes a processor 110 , a main memory 140 , a non-volatile memory 150 , various peripheral devices 160 , system logic 170 , and a power supply 180 .
- System logic 170 controls data transfers among processor 110 , main memory 140 , non-volatile memory 150 , and peripheral devices 160 .
- Power supply 180 provides reference voltages for logic devices in processor 110 .
- Computer system 100 is provided to illustrate various features of the present invention. The particular configuration shown is not necessary to implement the present invention. For example, system 100 may include multiple processors 110 or various components may be combined or eliminated.
- Processor 110 includes multiple functional units 124 , which form an instruction execution pipeline 120 . Instructions are provided to processor 110 from main memory 140 and non-volatile memory 150 . The amount of current used by processor 110 is determined by the level of activity in various functional units 124 generated by the instructions (or lack thereof) in pipeline 120 . A current control unit (CCU) 130 monitors current use by selected functional units 124 in response to the processed instructions and adjusts the activity level of processor 110 accordingly.
- CCU current control unit
- a floating-point multiply-accumulate instruction may cause the following operations to occur in the indicated resources: a floating point register file reads out three operands; an FMAC execution unit multiplies two of the operands and adds the product to the third operation; an exception unit checks the product and sum for errors; and a retirement unit writes the result to the floating point register file if no errors are detected.
- these resources or their components may be grouped into one or more functional units 124 which are turned on and off as the instruction is staged down the pipeline.
- Each functional unit 124 draws a certain amount of current when it is activated by the instruction.
- power supply 180 provides the current while maintaining the reference voltage level within a specified range. If activation or deactivation of one or more functional units 124 triggers a significant change in the current demanded by processor 110 , it will be difficult for power supply 180 to maintain the appropriate reference voltage level.
- the present invention provides a mechanism to reduce the impact of current changes on the reference voltage used by processor 110 .
- the activated/deactivated state of selected functional units 124 ′ are monitored.
- Selected functional units 124 ′ may be those that draw large currents when active, because these are likely to create sharp changes in di/dt when they are switched between their activate and inactivate states.
- CCU 130 monitors the state of one or more selected functional units 124 ′ on successive clock cycles to estimate a current change over the interval of clock cycles. The estimated current change is compared with a threshold value to determine whether the activity level of the processor should be adjusted. For example, if the current change is increasing faster than a first threshold, the flow of instructions through pipeline 120 may be reduced. If the estimated current change rate is decreasing faster than a second threshold, a functional unit 124 ′ that might otherwise be deactivated can be left activated to slow the current drop.
- the n-activity states may be analyzed to provide an estimated current change for the n-clock cycle interval. For example, each of the n-activity states may be weighted according to its proximity to the current clock cycle, and the weighted activity states may be summed to provide an estimate of the current change.
- CCU 130 may monitor current changes in multiple functional units 124 ′.
- the activity state of a functional unit 124 ′ may be weighted according to the current it draws when active.
- a total activity state for a given clock cycle is determined by the sum of weighted values for each functional unit 124 ′ that is monitored.
- the total activity states for the n-clock cycle interval is analyzed to determine an estimated current change.
- Current changes may be determined on a clock by clock basis, using a sliding window of n activity states.
- Current weights for selected functional units 124 ′ may be determined through a calibration process.
- CCU 130 may be calibrated once as a part of the design process or it may be self-calibrating. In the latter case, CCU 130 may employ current monitoring circuitry and a calibration algorithm periodically to adjust current weights for each functional unit.
- FIG. 2 represents in greater detail one embodiment of processor 110 .
- pipeline 120 is represented as fetch (FET), expand (EXP), register (REG), execution (EXE), detect (DET), and retirement (RET) stages, respectively, and the execution resources corresponding to each stage are indicated.
- FET fetch
- EXP expand
- REG register
- EXE execution
- DET detect
- RET retirement
- the present invention does not require partition of processor 110 into a particular set of pipeline stages.
- a disclosed stage may be subdivided into two or more stages to address timing issues or facilitate higher processor clock speeds.
- two or more stages may be combined into a single stage.
- Other embodiments may include hardware for processing instructions out-of-order.
- the disclosed pipeline provides only one example of how operations may be partitioned in a processor implementing the present invention.
- the front end of pipeline 120 includes fetch unit 210 and issue unit 220 , which provide instructions to execution units in the back end of pipeline 120 for execution.
- Fetch unit 210 retrieves instructions from memory 140 directly or through a local cache (not shown) and provides the fetched instructions to issue unit 220 .
- Issue unit 220 decodes the instructions and issues them to the execution resources in the back end of pipeline 120 .
- the term “instruction” is used generally to refer to instructions, macro-instructions, instruction bundles or any of a number of other mechanisms used to encode processor operations.
- the decode operation may transform a macro-instruction into one or more micro-operations ( ⁇ ops), resolve an instruction bundle into one or more instruction syllables, or retrieve a micro-code sequence associated with an instruction.
- the back end of pipeline 120 includes register unit 230 , execution unit 250 , exception unit 260 and retirement unit 270 .
- Register unit 230 includes a register rename unit and various register files (not shown) to identify the registers specified in the instructions and to accesses the data from the identified registers, respectively.
- Execution unit 250 includes one or more branch execution units (BRU) 252 , integer execution units (IEU) 254 , load/store units (LSU) 256 , and floating point execution units (FPU) 258 to process branch, integer, load/store, and floating point instructions.
- Exception unit 260 checks the results generated by execution units 250 and adjusts the control flow if an exceptional condition is encountered. If no exceptional conditions are detected, retirement unit 270 updates the architectural state of processor 110 with the results.
- the functional units 124 of FIG. 1 that are activated by different instructions may represent various combinations and subsets of the execution resources indicated for pipeline 120 .
- CCU 130 monitors activity states for selected functional units 124 ′, estimates current changes from the monitored activity states, and adjusts the activity level of processor 110 accordingly.
- one functional unit 124 ′ may include a floating-point register (in register unit 230 ), and FPU 258 may have components in two or more functional units.
- a selected functional unit 124 ′ includes various execution resources (register files, execution units, tracking logic) that are activated and deactivated together and draw a relatively large current when activated. The present invention does not depend on the detailed mapping between the functional units 124 , 124 ′ and the execution resources shown in FIG. 2 .
- FIG. 3 is a block diagram representing one embodiment of CCU 130 and its interactions with selected functional units 124 ′ of pipeline 120 .
- the disclosed embodiment of CCU 130 includes gate units 310 ( l )- 310 ( n ) (generically, gate unit 130 ), a monitor circuit 320 , and a throttle circuit 330 .
- Each gate unit 310 controls power delivery to an associated functional unit 124 ′ in pipeline 120 .
- gate unit 310 may be a clock gating circuit that couples or decouples a clock signal to functional unit 124 ′ according to whether or not the services of functional unit 124 ′ are used to implement an instruction currently in the pipe stage(s) in which functional unit 124 ′ operates.
- a pipeline control circuit 350 which indicates to gate units 310 which functional units 124 ′ are active for the currently executing instructions.
- gate unit 130 provides a signal to monitor circuit 320 to indicate whether its associated functional unit 124 ′ is active.
- the signal may be an activity state of functional unit 124 ′, which is asserted when functional unit 124 ′ is turned “on” and deasserted when functional unit 124 ′ is turned “off”.
- monitor circuit 320 may add their activity states to provide a net activity value for a given clock cycle.
- Embodiments of monitor circuit 320 may weight activity states to indicate the different current levels drawn by different functional units 124 ′ being monitored.
- a typical processor may include 10-20 gate units 310 to control power delivery to 10-20 functional units 124 . All functional units 124 may be monitored for current changes, although the advantages of the present invention may be realized by monitoring functional units 124 ′ that consume large amounts of current.
- Monitor circuit 320 collects signals from gate units 130 over a sequence of clock cycles and determines a current change rate from the collected signals.
- monitor circuit 320 includes weight units 314 ( l )- 314 ( n ) (generically, weight units 314 ), an adder 322 , an n-stage shift register 324 , an estimation circuit 326 , and a threshold comparator 328 .
- each weight unit 314 provides 0 or a no-zero value to adder 322 according to whether the activity state indicated by gating circuit 310 for its associated functional unit 124 ′ is inactive or activate, respectively.
- the non-zero value represents the current drawn by functional unit 124 ′ if it is activated.
- Adder 322 and weight units 314 are unnecessary if CCU 130 controls a single functional unit 124 ′. If currents drawn by monitored functional units 124 ′ are roughly comparable, weight units 314 may be eliminated.
- Adder 322 sums the (weighted or unweighted) activity states of selected functional units 124 ′ on each clock cycle to determine a total activity state.
- the total activity level is provided to a corresponding input of n-stage shift register 324 .
- Shift register 324 stores total activity states (weighted or unweighted) for each of n-successive clock cycles to provide a profile of current consumption over n-cycles of the processor clock.
- Estimator circuit 326 uses the n-stage data to generate an estimate of the current change, and threshold comparator 328 compares the estimated current change with one or more threshold values. If the estimated current change exceeds the threshold value(s), throttle circuit 330 adjusts the activity level of processor 110 .
- Estimator circuit 326 may implement any of a number of methods to estimate di/dt from the n-clock cycle sample of total activity states provided by shift register 324 .
- One method determines, on each clock cycle, a moving average of the processor's activity values over the n-clock cycles for which shift register 324 stores data. For this method, estimator circuit 326 determines:
- a N ⁇ w i ⁇ a i , where w i is a weight 314 ( i ) for functional unit 124 ( i ) and a i is the activity state indicated by gating circuit 314 ( i ).
- a i is 1 or 0 according to whether associated functional unit 124 ′( i ) is activated or deactivated, respectively. The summation is over all functional units controlled by CCU 130 .
- ⁇ I is a running average of the current consumption and may be compared with, e.g. maximum and minimum current thresholds to determine if the processor's activity level should be adjusted. one or more appropriate threshold values.
- Throttling di/dt leads to longer execution times because the pipeline does not start up as rapidly as it does when di/dt is not limited. It leads to higher power consumption because the pipeline does not shut down as rapidly as it does when di/dt is not limited. There is also a tradeoff between performance and power for the same degree of di/dt control. By adjusting the upper and lower thresholds independently, it is possible to favor either higher performance or lower average power.
- estimator circuit 326 may implement a more sophisticated method for estimating current changes. For example, each of the n-stage activity values may be multiplied by a coefficient as follows:
- ⁇ I C 1 ⁇ A 1 +C 2 ⁇ A 2 + . . . C N ⁇ 1 ⁇ A N ⁇ 1 +C N ⁇ A N
- ⁇ I represents a running average of the current change over the n-cycle interval rather than a running average of the current level itself.
- estimator circuit 326 employs different coefficients to the n-shift register values. For example, more recent activity values may be multiplied by higher coefficients, and less recent activity values being multiplied by lower coefficients.
- One set of coefficients is computed by taking the first derivative of the response of the power distribution network.
- FIG. 4 is a schematic representation of the settling behavior of a voltage 400 in a power distribution circuit in response to a large change in current demand.
- Voltage 400 “rings” for several cycles following a current change 420 , before it settles to the specified level. The period and amplitude of the ringing is determined by the electrical properties (resistance, capacitance, inductance) of the distribution circuit and the slope (di/dt) of the current change. Because current change 420 occurs very rapidly, it is indicated as a step in FIG. 4 .
- the unequal coefficients for the above-described embodiment of estimator circuit 326 may be derived from the first derivatives of voltage 400 at various points on the curve.
- comparator 328 compares the value of ⁇ I provided by estimator circuit 326 with first and second thresholds.
- the thresholds may represent maximum and minimum values for the current ( i ) or maximum positive and negative values of di/dt. If ⁇ I is larger than the first threshold, throttle circuit 330 reduces processor activity. This may be done, e.g., by injecting bubbles into execution pipeline 120 .
- bubble refers to a lack of activity in the execution pipeline such as when a no-operation (NOP) propagates through the pipeline stages.
- Another embodiment may activate a charge pump when ⁇ I is larger than the first threshold. The charge pump provides additional voltage drive to the processor to compensate for the spike in current demand. If ⁇ I is less than the second threshold, throttle circuit 330 increases activity in execution pipeline 120 . This may be done, e.g., by maintaining in their active states one or more functional units 124 ′ that could otherwise be deactivated.
- FIG. 5 is a schematic representation of one embodiment of throttle circuit 330 to adjust the activity level of a processor, responsive to a comparison between an estimated current change (or current) and one or more threshold levels. Also shown is an embodiment of comparator 328 that includes a positive threshold comparators (P_TH) 504 ( a ) and negative threshold comparator (N_TH) 504 ( b ) to compare ⁇ I with maximum positive and negative current changes, respectively. The results of these comparisons are indicated by output signals P_COMP and N_COMP.
- P_TH positive threshold comparators
- N_TH negative threshold comparator
- throttle circuit 330 includes a counter 510 , decoders 520 ( a ) and 520 ( b ), and associated memory devices 530 ( a ) and 530 ( b ), respectively.
- Memory devices 530 ( a ), 530 ( b ) may be, for example, read only memory devices (ROM). Different entries of memory device 530 ( a ) are accessed through decoder 520 ( a ) in response to a timing indication from counter 510 and comparison signal N_COMP. Similarly, different entries of memory device 530 ( b ) are accessed through decoder 520 ( b ) in response to a timing indication from counter 510 and comparison signal P_COMP.
- counter 510 is a modulo- 8 counter.
- the output of counter 510 increments column indices in decoders 520 ( a ) and 520 ( b ) from 0-8 on successive clock cycles and back to 0 when 8 is reached.
- P_COMP is a first output signal of comparator 328 that represents the result of a comparison between the estimated ⁇ I and a first threshold value.
- P_COMP is used to adjust a row index in decoder 520 ( a ) according to the relative sizes of ⁇ I and the first threshold.
- the first threshold value may represent a maximum positive current change, ⁇ I p—MAX
- P_COMP is scaled to select a row between 1 and 8, with higher row numbers being selected as ⁇ I approaches and then exceeds ⁇ I p—MAX . Higher number rows have more 0s in memory device 530 ( a ).
- the output of memory device 530 ( a ) is a signal, RED_ACT, that may be used to control activity reducing operations in the processor.
- RED_ACT may be used to enable issue unit 220 (FIG. 2) when it is one and disable issue unit 220 when it is zero.
- issue unit 220 issues instructions according to its normal operation.
- issue unit 220 issues no instructions, injecting bubbles (no-ops or NOPs) into pipeline 120 . NOPs trigger operations by few if any functional units 124 as they propagate down pipeline 120 .
- N_COMP is a second output signal of comparator 328 that represents the result of a comparison between the estimated ⁇ I and a second threshold value.
- the second threshold value may represent a maximum negative current change, ⁇ I p—MIN .
- N_COMP is scaled to adjust a row index in decoder 520 ( b ) to a value between 1 and 8 with higher values being favored as ⁇ I decreases below ⁇ I p—MIN . Higher numbered rows have more Is than lower numbered rows.
- the output of memory device 530 ( b ), INC_ACT may be used to control activity increasing operations in the processor. For example, INC_ACT may be used to disable clock gating for a functional unit, so it remains active (and draws current) even if no instruction currently needs it.
- FIG. 6 is a flowchart representing a method 600 in accordance with the present invention for controlling current changes in a processor.
- Method 600 first determines 610 which of the selected functional units in the processor are active.
- the state (active/inactive) of a functional unit may be indicated, for example, by a signal from a clock gating circuit that provides power to the function unit.
- the gating circuit may assert the signal if it is providing power to the function unit (active state), and it may deassert the signal if it is not currently providing power to the functional unit (inactive state).
- a current change is estimated 620 for the processor.
- the activity states of the functional units may be weighted according to the current they consume when active.
- the weighted activity states are summed to provide a total activity state, which may be tracked over an n-clock cycle interval.
- An estimated current change for a given clock cycle may be determined by analyzing the n total activity states.
- the estimated current change is compared 630 with one or more threshold levels.
- the threshold levels may represent, for example, maximum positive and negative current changes for the interval. If the estimated current change falls outside the range defined by these thresholds, the activity level of the processor is adjusted accordingly. For example, if the estimated current change is greater than the maximum positive current change, the instruction throughput may be reduced by injecting bubbles into the processor's pipeline. If the estimated current change exceeds the minimum negative current change, clock gating may be disabled for the appropriate functional unit accumulated power. If the estimated current change falls within the allowed range, instruction issue and clock gating operate in their normal modes.
- the instruction throughput of processor may be reduced through a number of mechanisms.
- bubbles may be injected into the instruction execution pipeline to reduce the fraction of clock cycles for which the processor's functional units are active. Bubbles may be introduced by, for example, triggering the issue unit to issue instructions on only selected cycles of the processor clock.
- the frequency at which the processor's clock is operated may be reduced.
- a mechanism for controlling the current change rate (“di/dt”) of a processor by monitoring the activity state of one or more of the processor's functional units over a specified interval. An estimated current change is determined from the monitored activity states, and the activity level of the processor is adjusted if the estimated current change exceeds a threshold value.
- the current change may be estimated by tracking the active functional units on successive clock cycles, and extracting an estimated current change rate from the changes in this number over a given number of clock cycles.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Microcomputers (AREA)
- Exchange Systems With Centralized Control (AREA)
- Electrophonic Musical Instruments (AREA)
- Adhesives Or Adhesive Processes (AREA)
Abstract
The present invention provides a mechanism for adjusting the activity of an integrated digital circuit such as a processor to reduce voltage changes attributable to current changes triggered by clock gating. The processor includes one or more functional units and a current control circuit that monitors activity states of the processor's functional units to estimate the current consumed over n clock cycles. The current control circuit estimates the current change for a given clock cycle from the n activity states and compares the estimated current change with first and second thresholds. The processors activity is decreased if the estimated current change is greater than the first threshold, and the processor activity is decreased if the estimated current change is less than the second threshold.
Description
1. Technical Field
The present invention relates to computers and, in particular, to mechanisms for controlling the rate at which power supply current changes in a microprocessor.
2. Background Art
Modern processors include extensive execution resources to support concurrent processing of multiple instructions. A processor typically includes one or more integer, floating point, branch, and memory execution units to implement integer, floating point, branch, and load/store instructions, respectively. In addition, integer and floating point units typically include register files to maintain data relatively close to the processor core. One drawback to providing a processor with extensive execution resources is that significant amounts of power are required to run them. Different execution units may consume more or less power and draw more or less current, depending on their size and the functions they implement, but the net effect of packing so much logic onto a relatively small process chip is to create the potential for significant power supply and power dissipation problems.
Few programs require the full range of a processor's execution resources for significant time intervals. The power dissipated running a program depends on the nature of its component instructions and their potential for being executed in parallel. Programs typically include a variety of instruction types, but it is rare that enough instructions of the correct type are available to keep all of the processor's execution resources busy for significant time periods. For this reason, most processors employ a clock gating mechanism to cut off the clock delivered to execution resources when they are not being used. In addition, different components of an execution resource can be turned on and off as instructions enter and exit the pipe stage serviced by the component. Clock gating reduces power consumption, but it can also cause rapid changes in the current provided to the processor. These current changes can alter the voltage at which the processor logic operates.
Clock signals are typically delivered to the processor's execution resources through a clock distribution network. The clock signal is used to synchronize the charging and discharging of nodes in the processor logic between supply voltage levels, e.g, Vcc and ground. The logic is designed to operate within specified ranges of these voltage levels, which are maintained by a regulated power supply. Sudden changes in the current drawn by the processor as functional units are gated on or off, can cause these supply voltages to vary. The voltage variations are due to the finite response time of the power supply as well as reactive (inductive and capacitive) elements in the power distribution network. If the voltage variations fall outside the specified range, they can damage circuits (for voltage excursions above a maximum safe value) or create errors (for voltage excursions below a level necessary to guarantee correct operation of the logic).
The significance of these voltage excursions is determined by the rate at which the current provided to the processor by the power supply changes (“current change rate” or “di/dt”) and the electrical properties of the distribution network. For processors that implement clock gating, the current change rate depends on both the size of the current change and the time scale over which it occurs. The latter is determined by the operating frequency of the processor. The former depends on the amount of current consumed by the functional unit(s) being gated. For example, floating point multiply units are notoriously power-hungry execution resources in processors. The change in the processor's current demand as these units are gated on and off can move the reference voltage temporarily outside its specified range.
Currently available processors offer no control over di/dt. One strategy contemplated for future processors forces a minimum level of activity to ensure that any current changes are relatively small. As processor frequencies increase, the time interval over which these current changes occur decreases, and even small current changes may affect the supply voltages. On the other hand, the use of power reduction strategies like clock-gating is increasing as processor frequencies (and power consumption) increase. Forcing minimum activity levels artificially raises power consumption levels, which partially offsets the benefits of clock gating.
The present invention addresses these and other deficiencies of available power throttling mechanisms.
The present invention may be understood with reference to the following drawings, in which like elements are indicated by like numbers. These drawings are provided to illustrate selected embodiments of the present invention and are not intended to limit the scope of the invention.
FIG. 1 is a block diagram of one embodiment of a computer system in which the present invention is implemented.
FIG. 2 is a block diagram of one embodiment of a processor that implements a current control unit in accordance with the present invention.
FIG. 3 is a block diagram of one embodiment of the current control unit implemented by the processor of FIG. 2.
FIG. 4 is a schematic representation of a voltage level as a function of time, following a significant change in the current consumed by a processor.
FIG. 5 is a block diagram representing one embodiment of the throttle circuit of FIG. 3.
FIG. 6 is a flowchart representing a method in accordance with the present invention for adjusting the activity level of a processor to reduce current changes in the processor.
The following discussion sets forth numerous specific details to provide a thorough understanding of the invention. However, those of ordinary skill in the art, having the benefit of this disclosure, will appreciate that the invention may be practiced without these specific details. In addition, various well-known methods, procedures, components, and circuits have not been described in detail in order to focus attention on the features of the present invention.
FIG. 1 is a block diagram of one embodiment of a computer system 100 in which the present invention may be implemented. Computer system 100 includes a processor 110, a main memory 140, a non-volatile memory 150, various peripheral devices 160, system logic 170, and a power supply 180. System logic 170 controls data transfers among processor 110, main memory 140, non-volatile memory 150, and peripheral devices 160. Power supply 180 provides reference voltages for logic devices in processor 110. Computer system 100 is provided to illustrate various features of the present invention. The particular configuration shown is not necessary to implement the present invention. For example, system 100 may include multiple processors 110 or various components may be combined or eliminated.
As an instruction is staged down pipeline 120, it directs various functional units 124 to perform one or more operations that, taken together, implement the instruction. For example, a floating-point multiply-accumulate instruction (FMAC) may cause the following operations to occur in the indicated resources: a floating point register file reads out three operands; an FMAC execution unit multiplies two of the operands and adds the product to the third operation; an exception unit checks the product and sum for errors; and a retirement unit writes the result to the floating point register file if no errors are detected. Depending on the particular processor implementation, these resources or their components may be grouped into one or more functional units 124 which are turned on and off as the instruction is staged down the pipeline.
Each functional unit 124 draws a certain amount of current when it is activated by the instruction. For computer system 100, power supply 180 provides the current while maintaining the reference voltage level within a specified range. If activation or deactivation of one or more functional units 124 triggers a significant change in the current demanded by processor 110, it will be difficult for power supply 180 to maintain the appropriate reference voltage level. The present invention provides a mechanism to reduce the impact of current changes on the reference voltage used by processor 110.
For one embodiment of the present invention, the activated/deactivated state of selected functional units 124′ are monitored. Selected functional units 124′ may be those that draw large currents when active, because these are likely to create sharp changes in di/dt when they are switched between their activate and inactivate states. CCU 130 monitors the state of one or more selected functional units 124′ on successive clock cycles to estimate a current change over the interval of clock cycles. The estimated current change is compared with a threshold value to determine whether the activity level of the processor should be adjusted. For example, if the current change is increasing faster than a first threshold, the flow of instructions through pipeline 120 may be reduced. If the estimated current change rate is decreasing faster than a second threshold, a functional unit 124′ that might otherwise be deactivated can be left activated to slow the current drop.
The current change may be estimated by tracking the active/inactive state (activity state=1/0, for example) of a selected functional unit 124′ on n-successive clock cycles. The n-activity states may be analyzed to provide an estimated current change for the n-clock cycle interval. For example, each of the n-activity states may be weighted according to its proximity to the current clock cycle, and the weighted activity states may be summed to provide an estimate of the current change.
For another embodiment of the invention, CCU 130 may monitor current changes in multiple functional units 124′. For this embodiment, the activity state of a functional unit 124′ may be weighted according to the current it draws when active. A total activity state for a given clock cycle is determined by the sum of weighted values for each functional unit 124′ that is monitored. The total activity states for the n-clock cycle interval is analyzed to determine an estimated current change. Current changes may be determined on a clock by clock basis, using a sliding window of n activity states.
Current weights for selected functional units 124′ may be determined through a calibration process. For example, CCU 130 may be calibrated once as a part of the design process or it may be self-calibrating. In the latter case, CCU 130 may employ current monitoring circuitry and a calibration algorithm periodically to adjust current weights for each functional unit.
FIG. 2 represents in greater detail one embodiment of processor 110. For the disclosed embodiment of processor 110, pipeline 120 is represented as fetch (FET), expand (EXP), register (REG), execution (EXE), detect (DET), and retirement (RET) stages, respectively, and the execution resources corresponding to each stage are indicated. The present invention does not require partition of processor 110 into a particular set of pipeline stages. For example, a disclosed stage may be subdivided into two or more stages to address timing issues or facilitate higher processor clock speeds. Alternatively, two or more stages may be combined into a single stage. Other embodiments may include hardware for processing instructions out-of-order. The disclosed pipeline provides only one example of how operations may be partitioned in a processor implementing the present invention.
The front end of pipeline 120 includes fetch unit 210 and issue unit 220, which provide instructions to execution units in the back end of pipeline 120 for execution. Fetch unit 210 retrieves instructions from memory 140 directly or through a local cache (not shown) and provides the fetched instructions to issue unit 220. Issue unit 220 decodes the instructions and issues them to the execution resources in the back end of pipeline 120.
Throughout this discussion, the term “instruction” is used generally to refer to instructions, macro-instructions, instruction bundles or any of a number of other mechanisms used to encode processor operations. For example, the decode operation may transform a macro-instruction into one or more micro-operations (μops), resolve an instruction bundle into one or more instruction syllables, or retrieve a micro-code sequence associated with an instruction.
The back end of pipeline 120 includes register unit 230, execution unit 250, exception unit 260 and retirement unit 270. Register unit 230 includes a register rename unit and various register files (not shown) to identify the registers specified in the instructions and to accesses the data from the identified registers, respectively. Execution unit 250 includes one or more branch execution units (BRU) 252, integer execution units (IEU) 254, load/store units (LSU) 256, and floating point execution units (FPU) 258 to process branch, integer, load/store, and floating point instructions. Exception unit 260 checks the results generated by execution units 250 and adjusts the control flow if an exceptional condition is encountered. If no exceptional conditions are detected, retirement unit 270 updates the architectural state of processor 110 with the results.
The functional units 124 of FIG. 1 that are activated by different instructions may represent various combinations and subsets of the execution resources indicated for pipeline 120. CCU 130 monitors activity states for selected functional units 124′, estimates current changes from the monitored activity states, and adjusts the activity level of processor 110 accordingly. For example, one functional unit 124′ may include a floating-point register (in register unit 230), and FPU 258 may have components in two or more functional units. In general, a selected functional unit 124′ includes various execution resources (register files, execution units, tracking logic) that are activated and deactivated together and draw a relatively large current when activated. The present invention does not depend on the detailed mapping between the functional units 124, 124′ and the execution resources shown in FIG. 2.
FIG. 3 is a block diagram representing one embodiment of CCU 130 and its interactions with selected functional units 124′ of pipeline 120. The disclosed embodiment of CCU 130 includes gate units 310(l)-310(n) (generically, gate unit 130), a monitor circuit 320, and a throttle circuit 330. Each gate unit 310 controls power delivery to an associated functional unit 124′ in pipeline 120. For example, gate unit 310 may be a clock gating circuit that couples or decouples a clock signal to functional unit 124′ according to whether or not the services of functional unit 124′ are used to implement an instruction currently in the pipe stage(s) in which functional unit 124′ operates. Also shown in FIG. 3 is a pipeline control circuit 350 which indicates to gate units 310 which functional units 124′ are active for the currently executing instructions.
For the disclosed embodiment of CCU 130, gate unit 130 provides a signal to monitor circuit 320 to indicate whether its associated functional unit 124′ is active. For example, the signal may be an activity state of functional unit 124′, which is asserted when functional unit 124′ is turned “on” and deasserted when functional unit 124′ is turned “off”. If CCU 130 handles multiple functional units 124′, monitor circuit 320 may add their activity states to provide a net activity value for a given clock cycle. Embodiments of monitor circuit 320 may weight activity states to indicate the different current levels drawn by different functional units 124′ being monitored.
A typical processor may include 10-20 gate units 310 to control power delivery to 10-20 functional units 124. All functional units 124 may be monitored for current changes, although the advantages of the present invention may be realized by monitoring functional units 124′ that consume large amounts of current.
Here, AN=Σwiai, where wi is a weight 314(i) for functional unit 124(i) and ai is the activity state indicated by gating circuit 314(i). For one embodiment, ai is 1 or 0 according to whether associated functional unit 124′(i) is activated or deactivated, respectively. The summation is over all functional units controlled by CCU 130. For this embodiment of estimator circuit 326, ΔI is a running average of the current consumption and may be compared with, e.g. maximum and minimum current thresholds to determine if the processor's activity level should be adjusted. one or more appropriate threshold values.
There are tradeoffs between the stability gained by throttling di/dt and the performance and power of the processor. Throttling di/dt leads to longer execution times because the pipeline does not start up as rapidly as it does when di/dt is not limited. It leads to higher power consumption because the pipeline does not shut down as rapidly as it does when di/dt is not limited. There is also a tradeoff between performance and power for the same degree of di/dt control. By adjusting the upper and lower thresholds independently, it is possible to favor either higher performance or lower average power.
Simulations indicate that changes in the reference voltage level attributable to di/dit can be reduced with limited impact on power consumption and performance using an interval of that is approximately 25% of the period of the ringing in the power distribution network. For the clock frequencies simulated, this interval is approximately 15 clock cycles (n=15).
Another embodiment of estimator circuit 326 may implement a more sophisticated method for estimating current changes. For example, each of the n-stage activity values may be multiplied by a coefficient as follows:
where C1 to CN/2 are positive, CN/2+1 to CN are negative, and lower indices refer to more recent 20 values. For this embodiment, ΔI represents a running average of the current change over the n-cycle interval rather than a running average of the current level itself.
Yet another embodiment of estimator circuit 326 employs different coefficients to the n-shift register values. For example, more recent activity values may be multiplied by higher coefficients, and less recent activity values being multiplied by lower coefficients. One set of coefficients is computed by taking the first derivative of the response of the power distribution network.
FIG. 4 is a schematic representation of the settling behavior of a voltage 400 in a power distribution circuit in response to a large change in current demand. Voltage 400 “rings” for several cycles following a current change 420, before it settles to the specified level. The period and amplitude of the ringing is determined by the electrical properties (resistance, capacitance, inductance) of the distribution circuit and the slope (di/dt) of the current change. Because current change 420 occurs very rapidly, it is indicated as a step in FIG. 4. The unequal coefficients for the above-described embodiment of estimator circuit 326 may be derived from the first derivatives of voltage 400 at various points on the curve.
One embodiment of comparator 328 compares the value of ΔI provided by estimator circuit 326 with first and second thresholds. Depending on the method used to determine ΔI, the thresholds may represent maximum and minimum values for the current (i) or maximum positive and negative values of di/dt. If ΔI is larger than the first threshold, throttle circuit 330 reduces processor activity. This may be done, e.g., by injecting bubbles into execution pipeline 120. Here, “bubble” refers to a lack of activity in the execution pipeline such as when a no-operation (NOP) propagates through the pipeline stages. Another embodiment may activate a charge pump when ΔI is larger than the first threshold. The charge pump provides additional voltage drive to the processor to compensate for the spike in current demand. If ΔI is less than the second threshold, throttle circuit 330 increases activity in execution pipeline 120. This may be done, e.g., by maintaining in their active states one or more functional units 124′ that could otherwise be deactivated.
FIG. 5 is a schematic representation of one embodiment of throttle circuit 330 to adjust the activity level of a processor, responsive to a comparison between an estimated current change (or current) and one or more threshold levels. Also shown is an embodiment of comparator 328 that includes a positive threshold comparators (P_TH) 504(a) and negative threshold comparator (N_TH) 504(b) to compare ΔI with maximum positive and negative current changes, respectively. The results of these comparisons are indicated by output signals P_COMP and N_COMP.
The disclosed embodiment of throttle circuit 330 includes a counter 510, decoders 520(a) and 520(b), and associated memory devices 530(a) and 530(b), respectively. Memory devices 530(a), 530(b) may be, for example, read only memory devices (ROM). Different entries of memory device 530(a) are accessed through decoder 520(a) in response to a timing indication from counter 510 and comparison signal N_COMP. Similarly, different entries of memory device 530(b) are accessed through decoder 520(b) in response to a timing indication from counter 510 and comparison signal P_COMP.
For the disclosed embodiment of throttle circuit 330, counter 510 is a modulo-8 counter. The output of counter 510 increments column indices in decoders 520(a) and 520(b) from 0-8 on successive clock cycles and back to 0 when 8 is reached. P_COMP is a first output signal of comparator 328 that represents the result of a comparison between the estimated ΔI and a first threshold value. P_COMP is used to adjust a row index in decoder 520(a) according to the relative sizes of ΔI and the first threshold. For example, the first threshold value may represent a maximum positive current change, ΔIp—MAX, and P_COMP is scaled to select a row between 1 and 8, with higher row numbers being selected as ΔI approaches and then exceeds ΔIp—MAX. Higher number rows have more 0s in memory device 530(a).
The output of memory device 530(a) is a signal, RED_ACT, that may be used to control activity reducing operations in the processor. For the disclosed embodiment of memory device 520(a), the probability that RED_ACT is a one decreases as P_COMP increases, i.e. as the size of ΔI increases relative to ΔIp—MAX. RED_ACT may be used to enable issue unit 220 (FIG. 2) when it is one and disable issue unit 220 when it is zero. When enabled, issue unit 220 issues instructions according to its normal operation. When disabled, issue unit 220 issues no instructions, injecting bubbles (no-ops or NOPs) into pipeline 120. NOPs trigger operations by few if any functional units 124 as they propagate down pipeline 120.
N_COMP is a second output signal of comparator 328 that represents the result of a comparison between the estimated ΔI and a second threshold value. The second threshold value may represent a maximum negative current change, ΔIp—MIN. For one embodiment, N_COMP is scaled to adjust a row index in decoder 520(b) to a value between 1 and 8 with higher values being favored as ΔI decreases below ΔIp—MIN. Higher numbered rows have more Is than lower numbered rows. The output of memory device 530(b), INC_ACT, may be used to control activity increasing operations in the processor. For example, INC_ACT may be used to disable clock gating for a functional unit, so it remains active (and draws current) even if no instruction currently needs it.
FIG. 6 is a flowchart representing a method 600 in accordance with the present invention for controlling current changes in a processor. Method 600 first determines 610 which of the selected functional units in the processor are active. The state (active/inactive) of a functional unit may be indicated, for example, by a signal from a clock gating circuit that provides power to the function unit. The gating circuit may assert the signal if it is providing power to the function unit (active state), and it may deassert the signal if it is not currently providing power to the functional unit (inactive state).
Once the active functional units have been determined 610, a current change is estimated 620 for the processor. Where multiple functional units are being monitored, the activity states of the functional units may be weighted according to the current they consume when active. The weighted activity states are summed to provide a total activity state, which may be tracked over an n-clock cycle interval. An estimated current change for a given clock cycle may be determined by analyzing the n total activity states.
The estimated current change is compared 630 with one or more threshold levels. The threshold levels may represent, for example, maximum positive and negative current changes for the interval. If the estimated current change falls outside the range defined by these thresholds, the activity level of the processor is adjusted accordingly. For example, if the estimated current change is greater than the maximum positive current change, the instruction throughput may be reduced by injecting bubbles into the processor's pipeline. If the estimated current change exceeds the minimum negative current change, clock gating may be disabled for the appropriate functional unit accumulated power. If the estimated current change falls within the allowed range, instruction issue and clock gating operate in their normal modes.
The instruction throughput of processor may be reduced through a number of mechanisms. For one embodiment of method 600, bubbles may be injected into the instruction execution pipeline to reduce the fraction of clock cycles for which the processor's functional units are active. Bubbles may be introduced by, for example, triggering the issue unit to issue instructions on only selected cycles of the processor clock. For another embodiment of the invention, the frequency at which the processor's clock is operated may be reduced.
There has thus been disclosed a mechanism for controlling the current change rate (“di/dt”) of a processor by monitoring the activity state of one or more of the processor's functional units over a specified interval. An estimated current change is determined from the monitored activity states, and the activity level of the processor is adjusted if the estimated current change exceeds a threshold value. The current change may be estimated by tracking the active functional units on successive clock cycles, and extracting an estimated current change rate from the changes in this number over a given number of clock cycles.
The disclosed embodiments have been provided to illustrate various features of the present invention. Persons skilled in the art of processor design, having the benefit of this disclosure, will recognize variations and modifications of the disclosed embodiments, which none the less fall within the spirit and scope of the appended claims.
Claims (19)
1. A processor comprising:
a functional unit;
a gating circuit to control power delivery to the functional unit and to indicate an activity state of the functional unit over a sequence of clock cycles;
a monitor circuit to determine a current change from the indicated activity states and to compare the determined current change with a threshold, wherein the monitor circuit includes a shift register to store indicated activity states for n-successive clock cycles of the processor and the current change is determined by a weighted sum of the activity states on successive clock cycles; and
a throttle circuit to adjust an activity level of the processor if the determined change exceeds the threshold, wherein the threshold is a first threshold to indicate a maximum positive current change rate and a second threshold to indicate a maximum negative current change rate,
the throttle circuit includes a first duty cycle table, rows of which indicate specified ratios of active/inactive states for the gating circuit, and a current row is selected to drive the gating circuit according to the comparison between the determined and threshold current change rates.
2. The processor of claim 1 , wherein the functional unit comprises a plurality of functional units that form a portion of an instruction execution pipeline for the processor.
3. The processor of claim 2 , wherein the gating circuit comprises a plurality of gating circuits, each gating circuit to control power delivery to a corresponding one of the plural functional units.
4. The processor of claim 1 , wherein the throttle circuit injects bubbles into the instruction pipeline when the determined rate exceeds the first threshold and the throttle circuit injects activity into the instruction pipeline when the determined rate exceeds the second threshol.
5. A method for controlling a current change rate in a processor comprising:
collecting activity state signals from one or more gating circuits of the processor on n-successive clock cycles of the processor;
estimating a current change from the n collected activity state signals, wherein estimating the current change comprises evaluating a weighted sum of the n collected activity states;
comparing the estimated current change with a threshold current change, wherein comparing comprises comparing the estimated current change with first and second thresholds, the first and second thresholds representing maximum positive and negative current changes, respectively;
adjusting an activity level of the processor when the estimated current change exceeds the threshold current change; and
activating and deactivating a functional unit associated with the gating circuit, responsive to instructions in a pipeline of the processor.
6. The method of claim 5 , wherein the gating circuit activates and deactivates an associated functional unit by:
enabling a clock signal to the functional unit on those clock cycles for which an instruction uses the functional unit; and
disabling the clock signal to the functional unit on those clock cycles for which an instruction does not use the functional unit.
7. The method of claim 5 , wherein adjusting an activity level comprises:
decreasing the activity level if the estimated current change is greater than the first threshold; and
increasing the activity level if the estimated current change is less than the second threshold.
8. The method of claim 7 , wherein decreasing the activity level comprises injecting bubbles into an instruction pipeline of the processor.
9. The method of claim 7 , wherein increasing the activity level comprises maintaining a gating circuits in an active state in the absence of instructions to a functional unit associated with the gating circuit.
10. A computer system comprising:
an instruction execution pipeline, including a functional unit, to execute instructions;
a voltage source to provide a reference voltage to the functional unit;
a gating circuit to activate or deactivate the functional unit and to indicate a activity state for the functional unit; and
a monitor circuit to estimate a current change from the indicated activity state and compare it with a threshold, wherein the activity state is weighted to indicate a level of current consumption for the functional unit associated with the control circuit; and
a throttle circuit to adjust an activity level in the instruction execution pipeline according to the comparison.
11. The computer system of claim 10 , wherein instruction execution pipeline includes an issue unit that issues instructions for processing by the instruction execution pipeline at a rate determined by a processor clock.
12. The system of claim 11 , wherein the throttle circuit adjusts a rate at which issue unit issues instructions by adjusting a duty cycle that characterizes the processor clock.
13. A processor comprising:
one or more functional units; and
a current control unit to monitor current changes associated with activating and deactivating the one or more functional units and to adjust an activity level of the processor responsive to the monitored current changes, wherein the functional units form an instruction execution pipeline and the processor further includes a pipeline control module to indicate the activity states for the one or more functional units according to types of instructions in the instruction execution pipeline.
14. The processor of claim 13 , wherein the current control unit includes a gate unit associated with each of the one or more functional units and each gate unit controls power to its associated functional unit in response to the activity state indicated for the functional unit.
15. The processor of claim 13 , wherein the current control unit further comprises a monitor circuit to estimate a current change of the processor using the activity states of the one or more functional units.
16. The processor of claim 15 , wherein the monitor circuit weights an activity state for each functional unit according to the current is consumes and sums the weighted activity states for a given clock cycle to provide a total activity state for the clock cycle.
17. The processor of claim 13 , wherein the current control unit comprises:
one or more gate units, each gate unit to control power delivery to an associated one of the functional units and to indicate an activity state for the associated functional unit; and
a monitor circuit to estimate a current change from the indicated activity states of the one or more functional units.
18. The processor of claim 17 , wherein the monitor circuit compares the estimated current change with a threshold value and provides an indication of the comparison.
19. The processor of claim 18 , further comprising a throttle circuit to adjust an activity level of the processor responsive to the indicated comparison.
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/608,748 US6636976B1 (en) | 2000-06-30 | 2000-06-30 | Mechanism to control di/dt for a microprocessor |
CNB018146058A CN100359431C (en) | 2000-06-30 | 2001-06-14 | Device and method to control di/dt for a microprocessor |
AU2001268488A AU2001268488A1 (en) | 2000-06-30 | 2001-06-14 | Mechanism to control di/dt for a microprocessor |
AT01946437T ATE397766T1 (en) | 2000-06-30 | 2001-06-14 | MECHANISM FOR CONTROLLING THE DI/DT OF A MICROPROCESSOR |
EP01946437A EP1307806B1 (en) | 2000-06-30 | 2001-06-14 | MECHANISM TO CONTROL di/dt FOR A MICROPROCESSOR |
DE60134323T DE60134323D1 (en) | 2000-06-30 | 2001-06-14 | MECHANISM FOR CONTROLLING THE DI / DT OF A MICROPROCESSOR |
PCT/US2001/019328 WO2002003185A2 (en) | 2000-06-30 | 2001-06-14 | MECHANISM TO CONTROL di/dt FOR A MICROPROCESSOR |
TW090115456A TWI259944B (en) | 2000-06-30 | 2001-06-26 | Mechanism to control DI/DT for a microprocessor |
HK03105632A HK1053380A1 (en) | 2000-06-30 | 2003-08-05 | Mechanism to control di/dt for a microprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/608,748 US6636976B1 (en) | 2000-06-30 | 2000-06-30 | Mechanism to control di/dt for a microprocessor |
Publications (1)
Publication Number | Publication Date |
---|---|
US6636976B1 true US6636976B1 (en) | 2003-10-21 |
Family
ID=24437809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/608,748 Expired - Lifetime US6636976B1 (en) | 2000-06-30 | 2000-06-30 | Mechanism to control di/dt for a microprocessor |
Country Status (9)
Country | Link |
---|---|
US (1) | US6636976B1 (en) |
EP (1) | EP1307806B1 (en) |
CN (1) | CN100359431C (en) |
AT (1) | ATE397766T1 (en) |
AU (1) | AU2001268488A1 (en) |
DE (1) | DE60134323D1 (en) |
HK (1) | HK1053380A1 (en) |
TW (1) | TWI259944B (en) |
WO (1) | WO2002003185A2 (en) |
Cited By (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020169990A1 (en) * | 2001-03-21 | 2002-11-14 | Sherburne Robert Warren | Low power clocking systems and methods |
US20020184546A1 (en) * | 2001-04-18 | 2002-12-05 | Sherburne, Jr Robert Warren | Method and device for modifying the memory contents of and reprogramming a memory |
US20030125922A1 (en) * | 2001-12-28 | 2003-07-03 | Grochowski Edward T. | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US20030126479A1 (en) * | 2001-12-28 | 2003-07-03 | Burns James S. | Digital throttle for multiple operating points |
US20040039954A1 (en) * | 2002-08-22 | 2004-02-26 | Nvidia, Corp. | Method and apparatus for adaptive power consumption |
US20050046400A1 (en) * | 2003-05-21 | 2005-03-03 | Efraim Rotem | Controlling operation of a voltage supply according to the activity of a multi-core integrated circuit component or of multiple IC components |
US20050102114A1 (en) * | 2003-11-12 | 2005-05-12 | Intel Corporation | System and method for determining processor utilization |
US6895520B1 (en) * | 2001-03-02 | 2005-05-17 | Advanced Micro Devices, Inc. | Performance and power optimization via block oriented performance measurement and control |
US20060031691A1 (en) * | 2004-08-04 | 2006-02-09 | Bacchus Reza M | Systems and methods to determine processor utilization |
US20060041766A1 (en) * | 2000-12-26 | 2006-02-23 | Mitsuhiro Adachi | Methods of clock throttling in an integrated circuit |
US20060080560A1 (en) * | 2004-10-12 | 2006-04-13 | Via Technologies, Inc. | Idling a processor pipeline |
US20060206740A1 (en) * | 2005-03-08 | 2006-09-14 | Hurd Kevin A | Systems and methods for controlling instruction throughput |
US20070038876A1 (en) * | 2005-06-15 | 2007-02-15 | Jorg Berthold | Circuit arrangement for activating a circuit block and method for the same |
US20070074054A1 (en) * | 2005-09-27 | 2007-03-29 | Chieh Lim S | Clock gated pipeline stages |
US20070074059A1 (en) * | 2005-09-27 | 2007-03-29 | Abernathy Christopher M | System and method for dynamic power management in a processor design |
US20070113113A1 (en) * | 2005-10-05 | 2007-05-17 | Infineon Technologies Ag | Data Processing Arrangement |
US20070283172A1 (en) * | 2006-05-30 | 2007-12-06 | Daniel Douriet | Mitigate Power Supply Noise Response by Throttling Execution Units Based Upon Voltage Sensing |
US20080203993A1 (en) * | 2007-02-27 | 2008-08-28 | Samsung Electronics Co., Ltd. | Dynamically scaling apparatus for a system on chip power voltage |
US20090048794A1 (en) * | 2006-05-30 | 2009-02-19 | International Business Machines Corporation | Method for Detecting Noise Events in Systems with Time Variable Operating Points |
US20090063884A1 (en) * | 2007-08-30 | 2009-03-05 | Weekly Roger D | Application of Multiple Voltage Droop Detection and Instruction Throttling Instances with Customized Thresholds Across a Semiconductor Chip |
US20090063065A1 (en) * | 2007-08-31 | 2009-03-05 | Weekly Roger D | Application of Multiple Voltage Droop Detection and Instruction Throttling Instances with Customized Thresholds Across a Semiconductor Chip |
US20090091378A1 (en) * | 2007-10-09 | 2009-04-09 | Anand Haridass | Statistical Switched Capacitor Droop Sensor for Application in Power Distribution Noise Mitigation |
US20090116995A1 (en) * | 2004-10-21 | 2009-05-07 | Climax Engineered Materials, Llc | Densified molybdenum metal powder |
US20090182986A1 (en) * | 2008-01-16 | 2009-07-16 | Stephen Joseph Schwinn | Processing Unit Incorporating Issue Rate-Based Predictive Thermal Management |
US20100070793A1 (en) * | 2008-09-18 | 2010-03-18 | Nec Electronics Corporation | Clock supply device |
US20100122069A1 (en) * | 2004-04-23 | 2010-05-13 | Gonion Jeffry E | Macroscalar Processor Architecture |
US20100185878A1 (en) * | 2009-01-16 | 2010-07-22 | Anton Rozen | Method for controlling power consumption and a device having power consumption capabilities |
US20100235612A1 (en) * | 2004-04-23 | 2010-09-16 | Gonion Jeffry E | Macroscalar processor architecture |
US20110055596A1 (en) * | 2009-09-01 | 2011-03-03 | Nvidia Corporation | Regulating power within a shared budget |
US20110055597A1 (en) * | 2009-09-01 | 2011-03-03 | Nvidia Corporation | Regulating power using a fuzzy logic control system |
US20110218779A1 (en) * | 2010-03-05 | 2011-09-08 | Vasant Palisetti | Identification of Critical Enables Using MEA and WAA Metrics |
US20120023347A1 (en) * | 2010-07-26 | 2012-01-26 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US20120144221A1 (en) * | 2010-12-02 | 2012-06-07 | Advanced Micro Devices, Inc. | Load step mitigation method and apparatus |
US20120254595A1 (en) * | 2009-12-14 | 2012-10-04 | Fujitsu Limited | Processor, information processing apparatus and control method thereof |
US20130262831A1 (en) * | 2012-04-02 | 2013-10-03 | Peter Michael NELSON | Methods and apparatus to avoid surges in di/dt by throttling gpu execution performance |
US20140115361A1 (en) * | 2012-10-19 | 2014-04-24 | Broadcom Corporation | Load step management |
US8843776B2 (en) | 2009-02-27 | 2014-09-23 | Hewlett-Packard Development Company, L.P. | Method and system of reporting electrical current to a processor |
US20150089198A1 (en) * | 2013-09-20 | 2015-03-26 | Nvidia Corporation | Technique for reducing voltage droop by throttling instruction issue rate |
US20150091915A1 (en) * | 2013-09-27 | 2015-04-02 | Linda L. Hurd | Current change mitigation policy for limiting voltage droop in graphics logic |
US9141421B2 (en) | 2012-12-04 | 2015-09-22 | International Business Machines Corporation | Reducing power grid noise in a processor while minimizing performance loss |
US9256265B2 (en) | 2009-12-30 | 2016-02-09 | Nvidia Corporation | Method and system for artificially and dynamically limiting the framerate of a graphics processing unit |
EP2953001A4 (en) * | 2013-01-30 | 2016-03-23 | Huawei Tech Co Ltd | Power supply system, electronic device and power distribution method of electronic device |
US20160091950A1 (en) * | 2014-09-26 | 2016-03-31 | Apple Inc. | Peak current management |
US9660633B2 (en) | 2014-07-31 | 2017-05-23 | International Business Machines Corporation | Power gating |
US9830889B2 (en) | 2009-12-31 | 2017-11-28 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US10255231B1 (en) * | 2015-07-31 | 2019-04-09 | Marvell International Ltd. | Apparatus and methods for managing aggregate integrated circuit (IC) current demand |
US20190146567A1 (en) * | 2017-11-10 | 2019-05-16 | Advanced Micro Devices, Inc. | Processor throttling based on accumulated combined current measurements |
US20190163229A1 (en) * | 2017-11-30 | 2019-05-30 | Bahaa Fahim | Clock Signal Modulation for Processors |
WO2019133106A1 (en) * | 2017-12-28 | 2019-07-04 | Intel Corporation | Accurate voltage control to enhance power performance of circuits |
US10565079B2 (en) | 2017-09-28 | 2020-02-18 | Intel Corporation | Determination of idle power state |
WO2021056031A3 (en) * | 2021-01-20 | 2021-06-03 | Zeku, Inc. | Apparatus and method of configurable power management using a power controller |
US11237615B2 (en) * | 2016-06-15 | 2022-02-01 | Intel Corporation | Current control for a multicore processor |
US20220269298A1 (en) * | 2021-02-23 | 2022-08-25 | Microsoft Technology Licensing, Llc | Activity smoothener circuit controlling rates of change of localized processing activity in an integrated circuit (ic), and related methods |
US20220318056A1 (en) * | 2021-03-30 | 2022-10-06 | Advanced Micro Devices, Inc. | Dynamic system power load management |
US20230131810A1 (en) * | 2021-10-21 | 2023-04-27 | Shanghai Biren Technology Co.,Ltd | Current variation slope control method for multi-core processor, control device and medium |
US20230297157A1 (en) * | 2020-11-30 | 2023-09-21 | Huawei Technologies Co., Ltd. | Power consumption control apparatus, processor, and power consumption control method |
US11775039B2 (en) * | 2015-08-20 | 2023-10-03 | Signify Holding, B.V. | Power providing device and method |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2412972B (en) * | 2001-12-28 | 2006-01-04 | Intel Corp | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US7685451B2 (en) * | 2002-12-20 | 2010-03-23 | Intel Corporation | Method and apparatus to limit current-change induced voltage changes in a microcircuit |
CN100442201C (en) * | 2006-11-09 | 2008-12-10 | 威盛电子股份有限公司 | Power managing method and system |
WO2009105103A1 (en) | 2008-02-21 | 2009-08-27 | Hewlett-Packard Development Company, L.P. | Systems and methods of component voltage adjustment |
US9069555B2 (en) * | 2011-03-21 | 2015-06-30 | Intel Corporation | Managing power consumption in a multi-core processor |
US20130117582A1 (en) * | 2011-11-04 | 2013-05-09 | Anand Satyamoorthy | Offline communication in a voltage scaling system |
EP2849024A1 (en) | 2013-09-16 | 2015-03-18 | ST-Ericsson SA | Power consumption management system and method |
CN117762614B (en) * | 2023-12-04 | 2024-09-24 | 海光信息技术股份有限公司 | Method, apparatus, device and storage medium for task processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5392437A (en) | 1992-11-06 | 1995-02-21 | Intel Corporation | Method and apparatus for independently stopping and restarting functional units |
US5457790A (en) | 1989-12-15 | 1995-10-10 | Hitachi, Ltd. | Low power consumption semiconductor integrated circuit device and microprocessor |
US5719800A (en) | 1995-06-30 | 1998-02-17 | Intel Corporation | Performance throttling to reduce IC power consumption |
US5948106A (en) | 1997-06-25 | 1999-09-07 | Sun Microsystems, Inc. | System for thermal overload detection and prevention for an integrated circuit processor |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287292A (en) * | 1992-10-16 | 1994-02-15 | Picopower Technology, Inc. | Heat regulator for integrated circuits |
EP0651314A1 (en) * | 1993-10-27 | 1995-05-03 | International Business Machines Corporation | An apparatus and method for thermally protecting a processing device |
-
2000
- 2000-06-30 US US09/608,748 patent/US6636976B1/en not_active Expired - Lifetime
-
2001
- 2001-06-14 DE DE60134323T patent/DE60134323D1/en not_active Expired - Lifetime
- 2001-06-14 AT AT01946437T patent/ATE397766T1/en not_active IP Right Cessation
- 2001-06-14 EP EP01946437A patent/EP1307806B1/en not_active Expired - Lifetime
- 2001-06-14 WO PCT/US2001/019328 patent/WO2002003185A2/en active Application Filing
- 2001-06-14 CN CNB018146058A patent/CN100359431C/en not_active Expired - Fee Related
- 2001-06-14 AU AU2001268488A patent/AU2001268488A1/en not_active Abandoned
- 2001-06-26 TW TW090115456A patent/TWI259944B/en not_active IP Right Cessation
-
2003
- 2003-08-05 HK HK03105632A patent/HK1053380A1/en not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457790A (en) | 1989-12-15 | 1995-10-10 | Hitachi, Ltd. | Low power consumption semiconductor integrated circuit device and microprocessor |
US5392437A (en) | 1992-11-06 | 1995-02-21 | Intel Corporation | Method and apparatus for independently stopping and restarting functional units |
US5719800A (en) | 1995-06-30 | 1998-02-17 | Intel Corporation | Performance throttling to reduce IC power consumption |
US5948106A (en) | 1997-06-25 | 1999-09-07 | Sun Microsystems, Inc. | System for thermal overload detection and prevention for an integrated circuit processor |
Cited By (116)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041766A1 (en) * | 2000-12-26 | 2006-02-23 | Mitsuhiro Adachi | Methods of clock throttling in an integrated circuit |
US7536575B2 (en) * | 2000-12-26 | 2009-05-19 | Intel Corporation | Methods of clock throttling in an integrated circuit |
USRE48819E1 (en) * | 2001-03-02 | 2021-11-16 | Advanced Micro Devices, Inc. | Performance and power optimization via block oriented performance measurement and control |
US6895520B1 (en) * | 2001-03-02 | 2005-05-17 | Advanced Micro Devices, Inc. | Performance and power optimization via block oriented performance measurement and control |
USRE47420E1 (en) * | 2001-03-02 | 2019-06-04 | Advanced Micro Devices, Inc. | Performance and power optimization via block oriented performance measurement and control |
US7398414B2 (en) | 2001-03-21 | 2008-07-08 | Gallitzin Allegheny Llc | Clocking system including a clock controller that uses buffer feedback to vary a clock frequency |
US20060080566A1 (en) * | 2001-03-21 | 2006-04-13 | Sherburne Robert W Jr | Low power clocking systems and methods |
US20040243866A1 (en) * | 2001-03-21 | 2004-12-02 | Sherburne Robert Warren | Low power clocking systems and methods |
US20020169990A1 (en) * | 2001-03-21 | 2002-11-14 | Sherburne Robert Warren | Low power clocking systems and methods |
US6990598B2 (en) | 2001-03-21 | 2006-01-24 | Gallitzin Allegheny Llc | Low power reconfigurable systems and methods |
US7139921B2 (en) * | 2001-03-21 | 2006-11-21 | Sherburne Jr Robert Warren | Low power clocking systems and methods |
US6993669B2 (en) * | 2001-04-18 | 2006-01-31 | Gallitzin Allegheny Llc | Low power clocking systems and methods |
US20020184546A1 (en) * | 2001-04-18 | 2002-12-05 | Sherburne, Jr Robert Warren | Method and device for modifying the memory contents of and reprogramming a memory |
US20060059377A1 (en) * | 2001-04-18 | 2006-03-16 | Sherburne Robert W Jr | Low power clocking systems and methods |
US7236920B2 (en) * | 2001-12-28 | 2007-06-26 | Intel Corporation | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US20030125922A1 (en) * | 2001-12-28 | 2003-07-03 | Grochowski Edward T. | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US7035785B2 (en) * | 2001-12-28 | 2006-04-25 | Intel Corporation | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US20060100840A1 (en) * | 2001-12-28 | 2006-05-11 | Intel Corporation | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US7742910B2 (en) * | 2001-12-28 | 2010-06-22 | Intel Corporation | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US7281140B2 (en) * | 2001-12-28 | 2007-10-09 | Intel Corporation | Digital throttle for multiple operating points |
US20070225959A1 (en) * | 2001-12-28 | 2007-09-27 | Grochowski Edward T | Mechanism for estimating and controlling di/dt-induced power supply voltage variations |
US20030126479A1 (en) * | 2001-12-28 | 2003-07-03 | Burns James S. | Digital throttle for multiple operating points |
US20040039954A1 (en) * | 2002-08-22 | 2004-02-26 | Nvidia, Corp. | Method and apparatus for adaptive power consumption |
US20100131787A1 (en) * | 2002-08-22 | 2010-05-27 | Nvidia Corporation | Adaptive Power Consumption Techniques |
US7634668B2 (en) | 2002-08-22 | 2009-12-15 | Nvidia Corporation | Method and apparatus for adaptive power consumption |
US7653825B1 (en) * | 2002-08-22 | 2010-01-26 | Nvidia Corporation | Method and apparatus for adaptive power consumption |
US20050046400A1 (en) * | 2003-05-21 | 2005-03-03 | Efraim Rotem | Controlling operation of a voltage supply according to the activity of a multi-core integrated circuit component or of multiple IC components |
US20050102114A1 (en) * | 2003-11-12 | 2005-05-12 | Intel Corporation | System and method for determining processor utilization |
US7975134B2 (en) * | 2004-04-23 | 2011-07-05 | Apple Inc. | Macroscalar processor architecture |
US8412914B2 (en) | 2004-04-23 | 2013-04-02 | Apple Inc. | Macroscalar processor architecture |
US20100122069A1 (en) * | 2004-04-23 | 2010-05-13 | Gonion Jeffry E | Macroscalar Processor Architecture |
US20100235612A1 (en) * | 2004-04-23 | 2010-09-16 | Gonion Jeffry E | Macroscalar processor architecture |
US8065502B2 (en) | 2004-04-23 | 2011-11-22 | Apple Inc. | Macroscalar processor architecture |
US8578358B2 (en) | 2004-04-23 | 2013-11-05 | Apple Inc. | Macroscalar processor architecture |
US20060031691A1 (en) * | 2004-08-04 | 2006-02-09 | Bacchus Reza M | Systems and methods to determine processor utilization |
US7594128B2 (en) * | 2004-08-04 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Systems and methods to determine processor utilization |
US20060080560A1 (en) * | 2004-10-12 | 2006-04-13 | Via Technologies, Inc. | Idling a processor pipeline |
US7266708B2 (en) * | 2004-10-12 | 2007-09-04 | Via Technologies, Inc. | System for idling a processor pipeline wherein the fetch stage comprises a multiplexer for outputting NOP that forwards an idle signal through the pipeline |
US20090116995A1 (en) * | 2004-10-21 | 2009-05-07 | Climax Engineered Materials, Llc | Densified molybdenum metal powder |
US20060206740A1 (en) * | 2005-03-08 | 2006-09-14 | Hurd Kevin A | Systems and methods for controlling instruction throughput |
US8074057B2 (en) * | 2005-03-08 | 2011-12-06 | Hewlett-Packard Development Company, L.P. | Systems and methods for controlling instruction throughput |
US20070038876A1 (en) * | 2005-06-15 | 2007-02-15 | Jorg Berthold | Circuit arrangement for activating a circuit block and method for the same |
US7757109B2 (en) * | 2005-06-15 | 2010-07-13 | Infineon Technologies Ag | Circuit arrangement for activating a circuit block and method for the same |
US20070074059A1 (en) * | 2005-09-27 | 2007-03-29 | Abernathy Christopher M | System and method for dynamic power management in a processor design |
US7681056B2 (en) | 2005-09-27 | 2010-03-16 | International Business Machines Corporation | Dynamic power management in a processor design |
US20070074054A1 (en) * | 2005-09-27 | 2007-03-29 | Chieh Lim S | Clock gated pipeline stages |
US7401242B2 (en) * | 2005-09-27 | 2008-07-15 | International Business Machines Corporation | Dynamic power management in a processor design |
US20080229078A1 (en) * | 2005-09-27 | 2008-09-18 | International Business Machines Corporation | Dynamic Power Management in a Processor Design |
US20070113113A1 (en) * | 2005-10-05 | 2007-05-17 | Infineon Technologies Ag | Data Processing Arrangement |
US7920978B2 (en) | 2006-05-30 | 2011-04-05 | International Business Machines Corporation | Method for detecting noise events in systems with time variable operating points |
US20070283172A1 (en) * | 2006-05-30 | 2007-12-06 | Daniel Douriet | Mitigate Power Supply Noise Response by Throttling Execution Units Based Upon Voltage Sensing |
US20090048794A1 (en) * | 2006-05-30 | 2009-02-19 | International Business Machines Corporation | Method for Detecting Noise Events in Systems with Time Variable Operating Points |
US7607028B2 (en) * | 2006-05-30 | 2009-10-20 | International Business Machines Corporation | Mitigate power supply noise response by throttling execution units based upon voltage sensing |
US8417984B2 (en) | 2007-02-27 | 2013-04-09 | Samsung Electronics Co., Ltd. | Dynamically scaling apparatus for a system on chip power voltage |
US8046622B2 (en) * | 2007-02-27 | 2011-10-25 | Samsung Electronics Co., Ltd. | Dynamically scaling apparatus for a system on chip power voltage |
US20080203993A1 (en) * | 2007-02-27 | 2008-08-28 | Samsung Electronics Co., Ltd. | Dynamically scaling apparatus for a system on chip power voltage |
US20090063884A1 (en) * | 2007-08-30 | 2009-03-05 | Weekly Roger D | Application of Multiple Voltage Droop Detection and Instruction Throttling Instances with Customized Thresholds Across a Semiconductor Chip |
US7720621B2 (en) | 2007-08-30 | 2010-05-18 | International Business Machines Corporation | Application of multiple voltage droop detection |
US7599808B2 (en) | 2007-08-31 | 2009-10-06 | International Business Machines Corporation | Application of multiple voltage droop detection and instruction throttling instances with customized thresholds across a semiconductor chip |
US20090063065A1 (en) * | 2007-08-31 | 2009-03-05 | Weekly Roger D | Application of Multiple Voltage Droop Detection and Instruction Throttling Instances with Customized Thresholds Across a Semiconductor Chip |
US7818599B2 (en) | 2007-10-09 | 2010-10-19 | International Business Machines Corporation | Statistical switched capacitor droop sensor for application in power distribution noise mitigation |
US20090091378A1 (en) * | 2007-10-09 | 2009-04-09 | Anand Haridass | Statistical Switched Capacitor Droop Sensor for Application in Power Distribution Noise Mitigation |
US20090182986A1 (en) * | 2008-01-16 | 2009-07-16 | Stephen Joseph Schwinn | Processing Unit Incorporating Issue Rate-Based Predictive Thermal Management |
US20100070793A1 (en) * | 2008-09-18 | 2010-03-18 | Nec Electronics Corporation | Clock supply device |
US8181049B2 (en) * | 2009-01-16 | 2012-05-15 | Freescale Semiconductor, Inc. | Method for controlling a frequency of a clock signal to control power consumption and a device having power consumption capabilities |
US20100185878A1 (en) * | 2009-01-16 | 2010-07-22 | Anton Rozen | Method for controlling power consumption and a device having power consumption capabilities |
US8843776B2 (en) | 2009-02-27 | 2014-09-23 | Hewlett-Packard Development Company, L.P. | Method and system of reporting electrical current to a processor |
US8826048B2 (en) | 2009-09-01 | 2014-09-02 | Nvidia Corporation | Regulating power within a shared budget |
US20110055597A1 (en) * | 2009-09-01 | 2011-03-03 | Nvidia Corporation | Regulating power using a fuzzy logic control system |
US8700925B2 (en) | 2009-09-01 | 2014-04-15 | Nvidia Corporation | Regulating power using a fuzzy logic control system |
US20110055596A1 (en) * | 2009-09-01 | 2011-03-03 | Nvidia Corporation | Regulating power within a shared budget |
US20120254595A1 (en) * | 2009-12-14 | 2012-10-04 | Fujitsu Limited | Processor, information processing apparatus and control method thereof |
US9256265B2 (en) | 2009-12-30 | 2016-02-09 | Nvidia Corporation | Method and system for artificially and dynamically limiting the framerate of a graphics processing unit |
US9830889B2 (en) | 2009-12-31 | 2017-11-28 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US8266569B2 (en) * | 2010-03-05 | 2012-09-11 | Advanced Micro Devices, Inc. | Identification of critical enables using MEA and WAA metrics |
US20110218779A1 (en) * | 2010-03-05 | 2011-09-08 | Vasant Palisetti | Identification of Critical Enables Using MEA and WAA Metrics |
US8583947B2 (en) * | 2010-07-26 | 2013-11-12 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US20120023348A1 (en) * | 2010-07-26 | 2012-01-26 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US20120023347A1 (en) * | 2010-07-26 | 2012-01-26 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US9063732B2 (en) | 2010-07-26 | 2015-06-23 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US8495402B2 (en) * | 2010-07-26 | 2013-07-23 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US8555095B2 (en) | 2010-07-26 | 2013-10-08 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
US9182803B2 (en) * | 2010-12-02 | 2015-11-10 | Advanced Micro Devices, Inc. | Load step mitigation method and apparatus |
US20120144221A1 (en) * | 2010-12-02 | 2012-06-07 | Advanced Micro Devices, Inc. | Load step mitigation method and apparatus |
US20130262831A1 (en) * | 2012-04-02 | 2013-10-03 | Peter Michael NELSON | Methods and apparatus to avoid surges in di/dt by throttling gpu execution performance |
US9430242B2 (en) * | 2012-04-02 | 2016-08-30 | Nvidia Corporation | Throttling instruction issue rate based on updated moving average to avoid surges in DI/DT |
US9098260B2 (en) * | 2012-10-19 | 2015-08-04 | Broadcom Corporation | System and method for omitting a clock pulse from a clock signal in response to a change in current consumption |
US20140115361A1 (en) * | 2012-10-19 | 2014-04-24 | Broadcom Corporation | Load step management |
US9146772B2 (en) | 2012-12-04 | 2015-09-29 | International Business Machines Corporation | Reducing power grid noise in a processor while minimizing performance loss |
US9141421B2 (en) | 2012-12-04 | 2015-09-22 | International Business Machines Corporation | Reducing power grid noise in a processor while minimizing performance loss |
US9935467B2 (en) | 2013-01-30 | 2018-04-03 | Huawei Technologies Co., Ltd. | Power supply system, electronic device, and electricity distribution method of electronic device |
EP2953001A4 (en) * | 2013-01-30 | 2016-03-23 | Huawei Tech Co Ltd | Power supply system, electronic device and power distribution method of electronic device |
US10241798B2 (en) * | 2013-09-20 | 2019-03-26 | Nvidia Corporation | Technique for reducing voltage droop by throttling instruction issue rate |
US20150089198A1 (en) * | 2013-09-20 | 2015-03-26 | Nvidia Corporation | Technique for reducing voltage droop by throttling instruction issue rate |
US20150091915A1 (en) * | 2013-09-27 | 2015-04-02 | Linda L. Hurd | Current change mitigation policy for limiting voltage droop in graphics logic |
US9250910B2 (en) * | 2013-09-27 | 2016-02-02 | Intel Corporation | Current change mitigation policy for limiting voltage droop in graphics logic |
US9660633B2 (en) | 2014-07-31 | 2017-05-23 | International Business Machines Corporation | Power gating |
US20160091950A1 (en) * | 2014-09-26 | 2016-03-31 | Apple Inc. | Peak current management |
US10255231B1 (en) * | 2015-07-31 | 2019-04-09 | Marvell International Ltd. | Apparatus and methods for managing aggregate integrated circuit (IC) current demand |
US11775039B2 (en) * | 2015-08-20 | 2023-10-03 | Signify Holding, B.V. | Power providing device and method |
US11762449B2 (en) * | 2016-06-15 | 2023-09-19 | Intel Corporation | Current control for a multicore processor |
US20220197361A1 (en) * | 2016-06-15 | 2022-06-23 | Intel Corporation | Current control for a multicore processor |
US11237615B2 (en) * | 2016-06-15 | 2022-02-01 | Intel Corporation | Current control for a multicore processor |
US10565079B2 (en) | 2017-09-28 | 2020-02-18 | Intel Corporation | Determination of idle power state |
US20190146567A1 (en) * | 2017-11-10 | 2019-05-16 | Advanced Micro Devices, Inc. | Processor throttling based on accumulated combined current measurements |
US10782729B2 (en) * | 2017-11-30 | 2020-09-22 | Intel Corporation | Clock signal modulation for processors |
US20190163229A1 (en) * | 2017-11-30 | 2019-05-30 | Bahaa Fahim | Clock Signal Modulation for Processors |
US10684663B2 (en) | 2017-12-28 | 2020-06-16 | Intel Corporation | Accurate voltage control to enhance power performance of circuits |
WO2019133106A1 (en) * | 2017-12-28 | 2019-07-04 | Intel Corporation | Accurate voltage control to enhance power performance of circuits |
US20230297157A1 (en) * | 2020-11-30 | 2023-09-21 | Huawei Technologies Co., Ltd. | Power consumption control apparatus, processor, and power consumption control method |
WO2021056031A3 (en) * | 2021-01-20 | 2021-06-03 | Zeku, Inc. | Apparatus and method of configurable power management using a power controller |
US20220269298A1 (en) * | 2021-02-23 | 2022-08-25 | Microsoft Technology Licensing, Llc | Activity smoothener circuit controlling rates of change of localized processing activity in an integrated circuit (ic), and related methods |
US11960338B2 (en) * | 2021-02-23 | 2024-04-16 | Microsoft Technology Licensing, Llc | Activity smoothener circuit controlling rates of change of localized processing activity in an integrated circuit (IC), and related methods |
US20220318056A1 (en) * | 2021-03-30 | 2022-10-06 | Advanced Micro Devices, Inc. | Dynamic system power load management |
US20230131810A1 (en) * | 2021-10-21 | 2023-04-27 | Shanghai Biren Technology Co.,Ltd | Current variation slope control method for multi-core processor, control device and medium |
US11941396B2 (en) * | 2021-10-21 | 2024-03-26 | Shanghai Biren Technology Co., Ltd | Current variation slope control method for multi-core processor, control device and medium |
Also Published As
Publication number | Publication date |
---|---|
CN100359431C (en) | 2008-01-02 |
EP1307806A2 (en) | 2003-05-07 |
DE60134323D1 (en) | 2008-07-17 |
AU2001268488A1 (en) | 2002-01-14 |
TWI259944B (en) | 2006-08-11 |
WO2002003185A2 (en) | 2002-01-10 |
EP1307806B1 (en) | 2008-06-04 |
HK1053380A1 (en) | 2003-10-17 |
WO2002003185A3 (en) | 2003-02-27 |
ATE397766T1 (en) | 2008-06-15 |
CN1608239A (en) | 2005-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6636976B1 (en) | Mechanism to control di/dt for a microprocessor | |
US7281140B2 (en) | Digital throttle for multiple operating points | |
US6931559B2 (en) | Multiple mode power throttle mechanism | |
KR100511110B1 (en) | Microprocessor with digital power throttle | |
JP3845642B2 (en) | Integrated circuit device having unit power adjustment mechanism | |
KR101020008B1 (en) | System and method of power management for computer processor systems | |
US10802567B2 (en) | Performing local power gating in a processor | |
Li et al. | Deterministic clock gating for microprocessor power reduction | |
Iyer et al. | Power aware microarchitecture resource scaling | |
US9594412B2 (en) | Controlling power gate circuitry based on dynamic capacitance of a circuit | |
US20080235364A1 (en) | Method and apparatus for using dynamic workload characteristics to control CPU frequency and voltage scaling | |
US20060100840A1 (en) | Mechanism for estimating and controlling di/dt-induced power supply voltage variations | |
WO2008122662A1 (en) | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system | |
TW201407339A (en) | For adaptive power throttling of microprocessors and microprocessors | |
Efthymiou et al. | Adaptive pipeline depth control for processor power-management | |
Kondo et al. | Design and evaluation of fine-grained power-gating for embedded microprocessors | |
Karkhanis et al. | Saving energy with just in time instruction delivery | |
Ratković et al. | An overview of architecture-level power-and energy-efficient design techniques | |
US20030084353A1 (en) | System and method for predictive power ramping | |
Kim et al. | Low power branch predictor for embedded processors | |
Giraldo et al. | Leveraging compiler support on VLIW processors for efficient power gating | |
JPH11149373A (en) | Processor | |
OSMANLIOǦLU et al. | Modifying the data-holding components of the microprocessors for energy efficiency | |
Bai et al. | Reducing issue queue power for multimedia applications using a feedback control algorithm | |
Bai | Dynamically reconfiguring resources to reduce power dissipation in high-performance microprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GROCHOWSKI, EDWARD T.;SAGER, DAVID;TIWARI, VIVEK;AND OTHERS;REEL/FRAME:011197/0205;SIGNING DATES FROM 20000907 TO 20000919 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |