Abstract:
A method, an apparatus, and a computer program are provided to reduce transient current swings during mode transitions. Traditionally, transient supply voltage fluctuations on a chip account for a large portion of the power supply. The number of series inductances and resistances are typically minimized, while adding large decoupling capacitances between the supply voltage and ground. However, situations may arise where reduction of series inductances and resistances cannot be accomplished. Therefore, to assist in controlling the transient current swings, reduction of clocking frequencies are performed in a controlled manner.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates generally to power conservation and, more particularly, to reducing transient current swings during transitions in high frequency systems. 
       DESCRIPTION OF THE RELATED ART 
       [0002]    As the operating frequency of micro-processors has increased, the resulting power dissipation has become a major bottle-neck in implementing large high performance systems. As a result, the package and cooling cost necessary to deal with the large power dissipation is accounting for a larger portion of total chip cost. For low-power mobile systems, the battery life-time is directly related to the power dissipation of the chip. Therefore, it is sought to increase the shelf-life of batteries. One way this is achieved is by clock gating, wherein the clock input to non-active circuit blocks is reduced in frequency or disabled completely. 
         [0003]    However, the process of scaling down the clock frequency introduces additional challenges.  FIG. 1  displays a simplified diagram of an electronic system having a power supply source, a printed circuit board (PCB), package, and chip. Power supply is delivered at the PCB end. The chip would like to interact with a stable power supply that is not affected by transient current consumption. A stable power supply becomes critical as the operating power supply is reduced, since any transient supply voltage fluctuations at the chip can account for a large portion of the desired power supply. To reduce transient current induced power supply functions, one generally minimizes the series inductance and resistance, while adding a large decoupling capacitance between VDD and GND. Where dI/dt is very large, the transient supply voltage swing caused by the series inductance can become very large. Hence, it is essential to reduce dI/dt when the chip is switched between various modes of operation. 
         [0004]    Therefore, there is a need to reduce transient current in a manner that addresses at least some of the limitations of conventional power distribution networks. 
       SUMMARY OF THE INVENTION 
       [0005]    The present invention provides a method, an apparatus, and a computer program for reducing transient current swings during mode transitions of high frequency/high power circuits. One manner to reduce transient current swings is to control clocking signals. In general, a high frequency clocking signals are provided to circuitry. Then, the frequency can be reduced over a plurality of pulses to control rate of change of current consumption from a power supply. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]    For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which: 
           [0007]      FIG. 1  schematically depicts a power supply source, package, printed circuit board (pcb), and chip in which, in part due to the parasitic series inductance and resistance present in the package and PCB, any transient current arising from the chip can result in transient voltage swing at VDD_CHIP and GND_CHIP; 
           [0008]      FIG. 2A  schematically depicts a shift register for incrementally changing a clocking frequency; 
           [0009]      FIG. 2B  schematically depicts a core clock logic gate; 
           [0010]      FIG. 3  illustrates the use of various bit values in a bit register leading to core clock pulses having decrementing duty cycles; and 
           [0011]      FIG. 4  illustrates a first waveform of current spikes without employment of the circuit of  FIG. 2 , and a second waveform of current spikes with employment of the circuit of  FIG. 2 . 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    In the following discussion, numerous specific details are set forth to provide a thorough understanding of the present invention. However, those skilled in the art will appreciate that the present invention may be practiced without such specific details. In other instances, well-known elements have been illustrated in schematic or block diagram form in order not to obscure the present invention in unnecessary detail. Additionally, for the most part, details concerning network communications, electro-magnetic signaling techniques, and the like, have been omitted inasmuch as such details are not considered necessary to obtain a complete understanding of the present invention, and are considered to be within the understanding of persons of ordinary skill in the relevant art. 
         [0013]    It is further noted that, unless indicated otherwise, all functions described herein may be performed in either hardware or software, or some combinations thereof. In a preferred embodiment, however, the functions are performed by a processor such as a computer or an electronic data processor in accordance with code such as computer program code, software, and/or integrated circuits that are coded to perform such functions, unless indicated otherwise. 
         [0014]    Turning to  FIG. 1 , illustrated is a circuit  100  in which significant power surges can occur at the moment when an operating frequency of a chip  180  is changed. A power supply  110  is coupled to a resistor (“R”)  112  and a R  116 . The R  112  is coupled to an inductor (“L”)  116 , and the R  116  is coupled to an L  118 . There is a capacitor (“C”)  120  coupled between the L  116  and the L  118 . The L  116  is coupled to an R  122 , and the L  118  is coupled to an R  126 . 
         [0015]    The R  122  is coupled to L  124 , and the R  126  is coupled to an L  128 . There is a C  130  coupled between the L  124  and the L  128 . The series of alternating resistors, inductors, and capacitors is repeated across the circuit, and is coupled to an R  152  and an R  156 . 
         [0016]    The R  152  is coupled to L  158 , and the R  156  is coupled to an L  159 . There is a C  160  coupled between the L  158  and the L  159 . The L  158  is coupled to an R  162 , and the L  159  is coupled to an R  166 . The R  162  is coupled to an L  164 , and the R  166  is coupled to an L  168 . There is a C  170  coupled between the L  164  and the L  168 . The chip  180  is coupled to the L  164  and the L  168 . In  FIG. 1 , serious fluctuations can occur in the system  100  when the chip  180  changes from one clocking frequency to a second clocking frequency, thereby creating current surges within the various passive devices of  FIG. 1 . 
         [0017]    Turning now to  FIG. 2A , illustrated is a circuit  200  for reducing current spikes in the circuit  100 , or other circuits. A phase locked loop (PLL)  210  or other clocking device is coupled to a finite state machine  240 , an “n” bit shift register  220 , and a logic gate  230 . The finite state machine  240  has various outputs. These are the B 1 , B 2 , B 3  up to BN outputs. Each output has a corresponding input in the divider  220 . The machine  240  also has a load output, which is coupled to its corresponding input in the divider  220 . The output of the divider  220  is coupled to a second input of the logic gate  230  and the input of the divider  220 . 
         [0018]    For slower frequencies, duty cycle preservation loses its criticality. In fact, in many applications, the maximum clock pulse width is limited to some fixed value. For example, in array and memory blocks, the duty cycle of a clock is intentionally reduced below 50% to prevent the undesired charge or discharge of critical nodes. The circuit  200  can be programmed to result in a desired dI/dt slope of a circuit, such as the circuit  100 , thereby reducing transient voltage swings on the power supply. Because 50% duty cycle is not required for a number of applications, the divide operation, that is, the reduction of transferred clock pulses, can be provided by the shift register  220 . Furthermore, the divider can be controlled either using hardware or software providing large flexibility in implementation. 
         [0019]    Generally, the circuit  200  employs a PLL  210  or other high frequency signal source, a state machine  240  that may or may not be controlled by the PLL  210 , an n-bit shift register divider  220 , and a logic circuit  230  that takes in output from the shift register and from the PLL and outputs a desired core clock signal. The shift register  220  comprises a ring shift register or counter  220  that shifts its bits in a loop, controlled by PLL clock  210 . The shift register  220  has cascaded level-sensitive master-slave type or edge sensitive type latches. In the shift register  220 , the output of a latch is transferred to the output of subsequent latch every PLL clock period. The output of the last latch is coupled to the input of the first latch, transforming this cascade into a ring shift register. 
         [0020]    In addition, the shift register  220  has parallel input bits, and a control signal called ‘load’. When ‘load’ is asserted, the n parallel bits are loaded to the output of each latch of the shift register. Furthermore, while the load signal is asserted, the logic circuit  230  operates such that the PLL clock pulses are transmitted, on a 1:1 basis, to core clock. Alternatively, the logic circuit  230  can be designed such that, when load signal is asserted, core clock is at a predetermined high or low state. 
         [0021]    In the circuit  200 , the finite state machine  240  generates the n parallel input bits that are loaded into the shift register  220 . These bits represent a “mask” value for whether or not the PLL clock pulse is to propagate to the core clock frequency. In one embodiment, the finite state machine  240  can be controlled by PLL  210  clock. For example, a counter in the finite state machine  240  can count the number of elapsed PLL  210  clock cycles prior to loading the next batch of bits into the shift register  220 . In this manner, core clock output of the logic  230  can reside at some intermediate divide ratio for a specified number of cycles of PLL clock. An n-bit shift register has a capability of providing a full speed, that is, divide by 1, to a maximum of divide by “n” capability. The shift register  220  essentially operates by ‘dropping off’, or masking, selected pulses. For example, in an n-bit shift register configuration, a divide by n operation can take place by dropping n−1 bits out of every n-successive pulses from the PLL signal. 
         [0022]    Turning now to  FIG. 2B , illustrated is one embodiment of the logic  230  illustrated in greater detail. Within the logic  230 , if the load signal is asserted, the PLL  210  clock pulses are output as a core clock value. However, if they are not asserted, then the PLL  210  clock pulses are masked by whatever the register output is on the shift register  220 . 
         [0023]    In the circuit  230 , a PLL  210  clock pulse and the mask value output of the divider  220  is input into an AND  260 . The PLL  210  clock pulse is also input into the clocking input of a D flip flop  270 . The load command is coupled into the data input of a D flip flop  270 . The PLL  210  clock pulse is a first input into a Multiplexer (MUX)  280 , and the output of the AND  260  is the second input into the MUX  280 . The Q output of the latch  270  controls the selection by the MUX  280 , and the selection becomes the core clock output. 
         [0024]    Within the AND  260 , the output of the divider  220  and the PLL  210  clock pulse are ANDed together. If the output of the divider  220  is a “1”, then the positive clock pulse propagates to the MUX  280 . However, if the output of the divider  220  is a “0”, then the 0 value is generated by the AND  260 , and a negative (that is, a zero value) clock pulse is generated by the AND  260 . 
         [0025]    In one embodiment, the circuit  230  can act as follows. If the load signal is not asserted, the input into a D latch  270  is “low”, which means that the Q output is low. Therefore, the MUX  280  selects the AND  260  output “a” to be propagated as the core clock impulses. However, if the load command is “high”, then the output of the D flip flop  270  is a “high”, which means that the MUX  280  instead selects input “b” to propagate as a core clock frequency. Input “b” means that, during the load command, the original PLL clock frequency is propagating as the core clock frequency. 
         [0026]    Turning now to  FIG. 3 , illustrated is a graph of the change of frequency. In this particular example, the divider  220  has 5 input bits. When the logic gate  230  is receiving the “load” signal, or the divider  220  is loaded entirely with the “1” values (11111), then, for every pulse of the PLL  210 , there is a corresponding core clock pulse. Replacing each “1” with a “0” effectively reduces the output frequency by 20%. This means that the core clock has an effective frequency that is reduced in 20% increments. 
         [0027]    In one embodiment, the finite state machine  240  is providing the necessary bits to go from full speed (divide by 1) to divide by 5. 
         [0028]    The division is carried out in 4 steps. The bit sequences loaded into the shift register for each step are shown below: 
         [0029]    Step 1. 10111 (drop 1 out of every 5 consecutive pulses) 
         [0030]    Step 2. 10101 (drop 2 out of every 5 consecutive pulses) 
         [0031]    Step 3. 10100 (drop 3 out of every 5 consecutive pulses) 
         [0032]    Step 4. 10000 (drop 4 out of every 5 consecutive pulses) 
         [0000]    After step 4, the frequency of core clock will be one fifth that of PLL clock. 
         [0033]    In one embodiment, the divider  220  is kept at each step for 20 PLL clock cycles. Therefore, it takes a total of 80 clock cycles to go from full speed (divide by 1) to a divide by 5 modes. In this manner, the rate of change current consumption from power supply of  FIG. 1  can be tightly controlled. 
         [0034]    In a further embodiment, once a given frequency is generated by the logic gate  230  using masked PLL pulses, then a second source of core clock pulses can be used, which has the same effective frequency, but with a 50% duty cycle. For instance, once an effective frequency division by a factor of 5 is achieved using circuit  200 , core clock can then switch to a different signal that has the same effective frequency but with a 50% duty cycle. Hence, circuit  200  provides the controlled frequency division capability while not guaranteeing 50% duty cycle output. Once the final effective frequency is arrived at, core clock can switch to a different signal that provides the same final effective frequency as circuit  200  but with a 50% duty cycle. 
         [0035]    Turning now to  FIG. 4 , illustrated are two different graphs illustrating current spikes in the circuit  100  both with and without employment of the circuit  200 . In  FIG. 3 , there is a first mode (mode  1 ) and a second mode (mode  2 ). The first mode represents a faster processing speed for the chip  180 , and the second mode represents a slower processing speed for the chip  180 . Without employment of the circuit  200 , as is illustrated, there is a comparatively large change in current spike in the transition from mode  1  to mode  2 . However, with the use of the circuit  200 , there are increments in current from mode  1  to mode  2 , as the current is not at its minimum until later in time, therefore leading to smaller current spikes between transitions. 
         [0036]    It is understood that the present invention can take many forms and embodiments. Accordingly, several variations may be made in the foregoing without departing from the spirit or the scope of the invention. The capabilities outlined herein allow for the possibility of a variety of programming models. This disclosure should not be read as preferring any particular programming model, but is instead directed to the underlying mechanisms on which these programming models can be built. 
         [0037]    Having thus described the present invention by reference to certain of its preferred embodiments, it is noted that the embodiments disclosed are illustrative rather than limiting in nature and that a wide range of variations, modifications, changes, and substitutions are contemplated in the foregoing disclosure and, in some instances, some features of the present invention may be employed without a corresponding use of the other features. Many such variations and modifications may be considered desirable by those skilled in the art based upon a review of the foregoing description of preferred embodiments. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the invention.