Digital circuits that use adaptive clocking can experience slowed performance as a result of compensating for voltage droop. Voltage droop typically occurs when a digital circuit is demanding a high level of current. Voltage droop can be detected and corrected via closed loop feedback. Additionally, such circuits generally reduce clock frequency in response to detecting the voltage droop. Reducing the clock frequency generally causes the clock period to remain longer than the critical path delay of the digital circuit. However, such control methods generally do not prevent voltage droop, they merely correct it after it occurs.
A first example includes a method comprising: providing a load current that flows into a digital load; determining a magnitude of a difference between a load voltage across the digital load and a reference voltage; determining a digital state of the digital load; and adjusting the load current based on (i) the magnitude of the difference between the load voltage and the reference voltage and (ii) the digital state of the digital load.
A second example includes a non-transitory computer readable medium storing instructions that, when executed by a control circuit, cause the control circuit to perform functions comprising: providing a load current that flows into a digital load; determining a magnitude of a difference between a load voltage across the digital load and a reference voltage; determining a digital state of the digital load; and adjusting the load current based on (i) the magnitude of the difference between the load voltage and the reference voltage and (ii) the digital state of the digital load.
A third example includes a control circuit comprising: one or more processors; and a computer readable medium storing instructions that, when executed by the one or more processors, cause the control circuit to perform functions comprising: providing a load current that flows into a digital load; determining a magnitude of a difference between a load voltage across the digital load and a reference voltage; determining a digital state of the digital load; and adjusting the load current based on (i) the magnitude of the difference between the load voltage and the reference voltage and (ii) the digital state of the digital load.
When the term “substantially” or “about” is used herein, it is meant that the recited characteristic, parameter, or value need not be achieved exactly, but that deviations or variations, including, for example, tolerances, measurement error, measurement accuracy limitations, and other factors known to those of skill in the art may occur in amounts that do not preclude the effect the characteristic was intended to provide. In some examples disclosed herein, “substantially” or “about” means within +/−0-5% of the recited value.
These, as well as other aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, it should be understood that this summary and other descriptions and figures provided herein are intended to illustrate the invention by way of example only and, as such, that numerous variations are possible.
As discussed above, control circuits and methods for more quickly compensating for the effects of voltage droop are needed. To this end, a method includes providing a load current that flows into a digital load. In some examples, the digital load is a microprocessor. The method also includes determining a magnitude of a difference between a load voltage across the digital load and a reference voltage (e.g., 1.0 V) and determining a digital state of the digital load. The digital state of the digital load can include the digital states of various hardware components of the digital load. Determining the digital states of the hardware components can include determining operations (if any) currently being performed or scheduled to be performed by the hardware components, determining whether the hardware components currently have access to the data necessary to perform the operations, and/or accessing metadata that indicates an anticipated change in the load current caused by executing an operation in the instruction queue of the digital load. The method also includes adjusting the load current based on (i) the magnitude of the difference between the load voltage and the reference voltage and (ii) the digital state of the digital load. For example, the control circuit can adjust the load current based on the magnitude of the difference between the load voltage and the reference voltage periodically at a first sampling rate, and adjust the load current based on the digital state of the digital load at a second sampling rate that is greater than or equal to the first sampling rate. In this way, the control circuit adjusts the load current being provided to the digital load by estimating current and/or future demands the digital load has or will have for the load current. The control circuit also adjusts the load current, generally at a slower rate, in response to detected deviations of the load voltage from the reference voltage.
The one or more processors 102 can be any type of processor(s), such as a microprocessor, a field programmable gate array, a digital signal processor, a multicore processor, etc., coupled to the non-transitory computer readable medium 104.
The non-transitory computer readable medium 104 can be any type of memory, such as volatile memory like random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), or non-volatile memory like read-only memory (ROM), flash memory, magnetic or optical disks, or compact-disc read-only memory (CD-ROM), among other devices used to store data or programs on a temporary or permanent basis.
Additionally, the non-transitory computer readable medium 104 stores instructions 111. The instructions 111 are executable by the one or more processors 102 to cause the control circuit 100 to perform any of the functions or methods described herein.
The communication interface 106 can include hardware to enable communication within the control circuit 100 and/or between the control circuit 100 and one or more other devices. The hardware can include any type of input and/or output interfaces, a universal serial bus (USB), PCI Express, transmitters, receivers, and antennas, for example. The communication interface 106 can be configured to facilitate communication with one or more other devices, in accordance with one or more wired or wireless communication protocols. For example, the communication interface 106 can be configured to facilitate wireless data communication for the control circuit 100 according to one or more wireless communication standards, such as one or more Institute of Electrical and Electronics Engineers (IEEE) 801.11 standards, ZigBee standards, Bluetooth standards, etc. As another example, the communication interface 106 can be configured to facilitate wired data communication with one or more other devices. The communication interface 106 can also include analog-to-digital converters (ADCs) or digital-to-analog converters (DACs) that the control circuit 100 can use to control various components of the control circuit 100 or external devices.
The current source 108 can include any circuit configured to generate an electrical current having a magnitude that is controlled by an input control signal.
The ADC 110 is configured to generate a digital signal representation of an analog input signal.
The control circuit 100 also determines a magnitude and/or a polarity of a difference between a load voltage Vdd across the digital load 152 and a reference voltage. The load voltage Vdd can vary based on the digital state of the digital load 152 and/or the load current IL being provided by the current source 108. That is, the digital load 152 can draw varying magnitudes of the load current IL based on the quantity and type of state transitions and/or switching that is occurring at the transistor level of the digital load 152. In this way, the digital load 152 can exhibit transient changes in overall resistance that affects the magnitude of the load current IL and/or the load voltage Vdd. The reference voltage could be within a range of 0.9 volts (V) to 1.3 V, for example, 1.0 V. As such, the control circuit 100 (e.g., periodically and/or continuously) determines a magnitude and/or a polarity of the difference between the load voltage Vdd and the reference voltage.
More specifically, the ADC 110 receives and/or samples the load voltage Vdd and provides the load voltage Vdd to the one or more processors 102 in a digital form. The one or more processors 102 uses the digital form to determine the magnitude and/or polarity of the difference between the load voltage Vdd and the reference voltage.
The control circuit 100 also determines the digital state of the digital load 152, for example, in a periodic and/or continuous manner. More specifically, the control circuit 100 receives digital signals 154 from the digital load 152 and uses the digital signals 154 to determine digital states of a plurality of hardware components of the digital load 152. Such hardware components could include one or more of a floating point multiplier, a floating point adder, a floating point divider, an integer multiplier, an integer adder, an integer divider, a shift register, a filter, an FFT module, a logic circuit, or a memory module, but other examples are possible.
The control circuit 100 determining the digital states of the plurality of hardware components can involve identifying one or more operations currently being performed by the digital load, that is, identifying one or more operations currently being performed by the plurality of hardware components. The digital signals 154 can identify the hardware components of the digital load 152 that are currently performing operations and identify the operations. For example, the digital signals 154 could include information from an instruction queue of the digital load 152 that explicitly or implicitly identifies the hardware components and identifies the operations the hardware components are currently performing. For instance, the digital signals 154 could indicate that current operations of the digital load 152 include a floating point multiplier performing floating point multiplication and an integer adder performing integer addition. The digital signals 154 could be expressed as one or more numerical ratings (e.g., current values) representing anticipated current demands corresponding to each operation currently being performed by the digital load 152, with the sum of such current demands contributing to an estimated value of the load current IL that is imminently anticipated.
In addition to considering operations currently being performed by the digital load 152, the control circuit 100 can also evaluate operations that the digital load 152 is scheduled to perform in the future in determining the digital state of the digital load 152. For example, the control circuit 100 determines one or more operations scheduled to be performed by the digital load 152 in the future based on accessing the instruction queue for the digital load 152. In this way, the control circuit 100 can anticipate future current demands of the digital load 152 and adjust the load current IL accordingly. Thus, the digital signals 154 could be expressed as one or more numerical ratings representing anticipated current demands corresponding to each operation scheduled to be performed by the digital load 152, with the sum of such current demands contributing to an estimated value of the load current IL that is anticipated in the future.
Additionally or alternatively, the digital signals 154 can indicate whether the digital load 152 has access to the data necessary to perform the operations scheduled via the instruction queue. Depending on the content of the digital signals 154, the control circuit 100 can determine that the digital load 152 has access to the data (e.g., operands) necessary to perform a scheduled operation and that the digital load 152 therefore is ready to perform the scheduled operation and adjust the load current IL accordingly. In another scenario, the control circuit 100 can determine that the digital load 152 is waiting to receive the data necessary to perform a scheduled operation and delay an adjustment of the load current IL that corresponds to the scheduled operation.
Additionally or alternatively, the control circuit 100 can determine the digital state of the digital load 152 based on accessing metadata that explicitly indicates an anticipated change in the load current IL caused by executing an operation listed in the instruction queue. For example, the instruction queue of the digital load 152 can include metadata corresponding to each scheduled instruction that explicitly indicates the anticipated change in the load current IL caused by executing that particular operation.
The control circuit 100 can compute a sum of the digital states of the plurality of hardware components to determine the overall digital state of the digital load 152. For example, the control circuit 100 can add (a) the components of the digital states of the plurality of hardware components that correspond to operations currently being executed by the plurality of hardware components to (b) the components of the digital states of the plurality of hardware components that correspond to operations scheduled to be performed by the plurality of hardware components. Each component of the digital states can be numerically weighted according to its contribution to present or anticipated demand for the load current IL. As such, control circuit 100 can adjust the load current IL with a change equal to the sum of the digital states (e.g., current demands) of the plurality of hardware components.
As such, the control circuit 100 adjusts the load current IL based on (i) the magnitude of the difference between the load voltage Vdd and the reference voltage and (ii) the digital state of the digital load 152. For example, the communication interface 106 provides a first control signal to the current source 108 representing a command to adjust the load current IL based on the difference between the load voltage Vdd and the reference voltage. Additionally, the communication interface 106 provides a second control signal to the current source 108 representing a command to adjust the load current IL based on the digital state of the digital load 152. Accordingly, the current source 108 adjusts the load current IL based on the first control signal and adjusts the load current IL based on the second control signal.
In some examples, the current source 108 adjusts the load current IL such that the magnitude of the difference between the load voltage Vdd and the reference voltage is reduced or substantially eliminated. For instance, the control circuit 100 can determine that the load voltage Vdd is less than the reference voltage and responsively increase the load current IL, which tends to increase the load voltage Vdd. For example, the degree of increase in the load current IL can be proportional to the difference between the load voltage Vdd and the reference voltage. In other examples, proportional-integral (PI) or proportional-integral-differential (PID) control schemes can be used. Other examples are possible as well.
In another example, the control circuit 100 can determine that the load voltage Vdd is greater than the reference voltage and responsively decrease the load current IL, which tends to decrease the load voltage Vdd. For example, the degree of decrease in the load current IL can be proportional to the difference between the load voltage Vdd and the reference voltage. In other examples, PI or PID control schemes can be used. Other examples are possible as well.
Typically, the control circuit 100 periodically determines the magnitude of the difference between the load voltage Vdd and the reference voltage at a first sampling rate typically in the range of 10 MHz up to 1 GHz. The control circuit 100 also periodically determines the digital state of the digital load 152 at a second sampling rate that is greater than or equal to the first sampling rate. Typical ranges for the second sampling rate can vary within the range of 30 MHz to 3 GHz. As such, the control circuit 100 can adjust the load current IL based on the magnitude of the difference periodically at the first sampling rate and can adjust the load current IL based on the digital state of the digital load 152 at the second sampling rate.
At block 302, the method 300 includes the control circuit 100 providing the load current IL that flows into the digital load 152. Functionality related to block 302 is described above with reference to
At block 304, the method 300 includes determining the magnitude of the difference between the load voltage Vdd across the digital load 152 and the reference voltage. Functionality related to block 304 is described above with reference to
At block 306, the method 300 includes determining the digital state of the digital load 152. Functionality related to block 306 is described above with reference to
At block 308, the method 300 includes adjusting the load current IL based on (i) the magnitude of the difference between the load voltage Vdd and the reference voltage and (ii) the digital state of the digital load 152. Functionality related to block 308 is described above with reference to
While various example aspects and example embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various example aspects and example embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.
Number | Date | Country | |
---|---|---|---|
20240134405 A1 | Apr 2024 | US |