The present invention is generally related to digital computer systems.
One of the important features of integrated circuits deigned for portable applications is their ability to efficiently utilize the limited capacity of the battery power source. Typical applications include cellular telephones and personal digital assistants (PDAs), which might have a Lithium ion battery or two AAA alkaline batteries as the power source. Users have come to expect as much as three to four weeks of standby operation using these devices. Standby operation refers to the situation where the cellular phone, handheld device, etc. is powered on but not being actively used (e.g., actively involved in a call). Generally, is estimated that that the integrated circuits providing the functionality of the device is only performing useful work approximately 2% of the time while the device is in standby mode.
Removing the power supply from selected circuits of a device during standby is a technique employed by designers for battery powered applications. The technique is generally applied only to circuit blocks outside of the central processing unit (CPU). A primary reason for not applying this technique to CPUs, has been the difficulty in being able to retain the current processor state information necessary to continue execution after coming out of the standby mode. One solution for this limitation involves saving the current processor state information to external storage mechanisms (e.g., such as flash memory, a hard disk drive, etc.). In such a case there is the overhead required in transferring the state to and from the external storage mechanism. Even if the battery powered device had a hard disk drive, and many don't, the time consuming state transfer would not meet the real time response requirements of the application when the device needs to wake up to respond to a new event.
Other issues are presented when the functionality of a device is implemented by a system-on-a-chip (SOC) integrated circuit. For example, when the core of a system-on-a-chip CPU is temporarily powered down (e.g., deep sleep mode), some of the outputs that connect to assorted peripherals (e.g. LCD display, SPI interface, SDIO, Hard-disk, etc.) should be held in an idle state to avoid having to reprogram the peripheral or lose existing context in the peripheral. This causes a problem since some peripherals need particular values to be set at their inputs (which are connected to the outputs of the SOC) to hold a safely inactive state. For example, if a device is connected to a SOC that is clocked on the falling edge of a clock signal, and the SOC is powered down with that signal as a logic 1, but the power down state is a logic 0 (e.g., ground), it will cause a spurious clock on that signal.
This problem is further exacerbated by the heavy use of pin-muxing or sharing, in which a single pin can have multiple functions in different designs by different customers. In one design a pin may be set to act as part of an SPI interface that wants to be held low when in sleep mode, while the same pin in another design, perhaps by a different customer may be used as a UART pin which would need to be held high when the CPU is put to deep sleep mode. While pin-muxing provides a way to put more features in each chip and allows the chip to be more suitable for a wide range of designs, it precludes knowing exactly at IC design time what each pin will be used for. A more flexible method of configuring the power down states is needed.
One solution to this problem would be to have a software defined register for each pin that drives the pin to any one of the allowed number of states, such as: Input, output 0, output 1, output Hi-Z, open drain, etc. This is a workable solution, but has a problem that since normally the signals that control these functions come from the core of the CPU, they will not be present when the core is powered down in deep sleep mode. To overcome this, a second set of registers on the SOC will have to be in the special power domain.
The special power domain is configured to always have power on (AO), even in the deep sleep mode. The special power domain allows the state information of these IO pads to be preserved. However the big problem is that it requires multiple signals from the portion of the chip that is in the special power domain to each pad, this can cause traces to be required. For example, with 300 signal pads and 3 wires per pad, as many as 900 traces have to be routed on the integrated circuit die, which is a large number at the top level of an integrated circuit die layout. These pad control signals must also be powered by the AO rail, which complicates the distribution of this AO rail or the routing of these pad control signals. Standard interrupt mechanism from the peripheral should result in an answer from the processor whatever is it's current state (e.g., active or standby). The benefits of a low power strategy cannot be fully realized if this mechanism is not transparent to the external environment.
Thus, what is needed is a solution for powering down a CPU for reduced standby power consumption while retaining the integrity of the operating state. What is further needed is a solution for powering down the CPU without imposing burdensome trace routing requirements on the integrated circuit die layout.
Embodiments of the present invention provides a method and system for powering down an integrated circuit device for reduced standby power consumption while retaining the integrity of the operating state. Embodiments of the present invention further provide a solution for powering down the integrated circuit device without imposing burdensome trace watering requirements on the integrated circuit die layout.
In one embodiment, the present invention is implemented as a circuit for maintaining asserted values on an input output pin (e.g., pad, etc.) of an integrated circuit device when one or more functional blocks of the device are placed in a sleep mode. The circuit includes an interface for coupling a functional block of a processor to an input and output pin and an output storage element coupled to the interface for storing a current value (e.g., logical one, logical zero, etc.) of the input output pin. The circuit further includes a sleep mode enable for controlling the output storage element to store the current value of the input output pin. The current value (e.g., as generated by the functional block) is stored prior to the functional block entering a sleep mode. The output storage element causes the current value of the input output pin to remain asserted after the functional block is in sleep mode. The sleep mode enable is also configured to deactivate the storage element when the sleep mode is exited, thereby allowing the input output pin to resume being driven by the awakened functional block. In one embodiment, the deactivation is performed independently among the different functional blocks. The integrated circuit device can be a CPU (central processor unit), a system-on-a-chip, and embedded computer system, or the like. The input output pin can be coupled to a peripheral device (e.g., display screen, USB interface, etc.) for providing functionality to a user.
In this manner, the signal state of the input output pins can be maintained as one or more functional blocks of the integrated circuit device are powered down. Upon exit from sleep mode (e.g., wake up), the input output pins can resume being driven by the one or more functional blocks. Additionally, this capability is provided without requiring the routing of multiple signals from a special power domain to the input output pin, which greatly reduces signal trace routing requirements. For example, embodiments of the present invention enabled a wake-up when one of a designated set of inputs transitions state. This allows the integrated circuit device to use the same pins that are used to recognize events during normal operation as wake pins to transition the device out of deep sleep.
In one embodiment, different voltage rails are provided to accommodate the different peripheral voltages. For example, a camera can work at one voltage while a WiFi chipset within the camera is working at another voltage. Waking-up from the standard signal of a peripheral (e.g., such as an interrupt) avoids creating additional pads just for this function, which would require a specific voltage choice and voltage translators on the board. So some few selected pads are used as a generic input in the processor active mode but as a wake-up in the processor standby mode, thus at the correct voltage.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements.
Reference will now be made in detail to the preferred embodiments of the present invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of embodiments of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be recognized by one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the embodiments of the present invention.
Notation and Nomenclature:
Some portions of the detailed descriptions, which follow, are presented in terms of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, computer executed step, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “processing” or “accessing” or “executing” or “storing” or “rendering” or the like, refer to the action and processes of a computer system (e.g., computer system 100 of
Computer System Platform:
System 100 can be implemented as a programmable system-on-a-chip integrated circuit device, where for example, the CPU 101, memory 115, and GPU 110 are fabricated as a single integrated circuit die, with the display 112 being coupled as a peripheral device. Similarly, the system 100 can be implemented as an embedded computer system within, for example, a handheld device (e.g., PDA, cell phone, etc.). Alternatively, system 100 can be implemented as, for example, a desktop computer system or server computer system, having a powerful general-purpose CPU 101 coupled to a dedicated graphics rendering GPU 110. In such an embodiment, components can be included that add peripheral buses, specialized graphics memory, IO devices, and the like. Similarly, system 100 can be implemented a set-top video game console device such as, for example, the Xbox®, available from Microsoft Corporation of Redmond, Wash., or the PlayStation3®, available from Sony Computer Entertainment Corporation of Tokyo, Japan.
Embodiments of the Invention:
Embodiments of the present invention implement a method and system for powering down an integrated circuit device for reduced standby power consumption while retaining the integrity of the operating state. Embodiments of the present invention enable the reliable powering down and waking up of the integrated circuit device without imposing burdensome trace routing requirements on the integrated circuit die layout.
In the
It should be noted that processor 210 can be used to implement a central processor unit, such as, for example, CPU 101 of
The power domain 230 provides a mechanism for waking up the processor 210 from a sleep mode. For example, in one embodiment, the power domain 230 is configured to consistently have power applied to its constituent circuits. For example, the constituent circuits of the power domain 230 can be configured to receive a clock signal in an uninterrupted manner so that it can execute sequential state machine logic, instructions, etc. while the rest of the processor 210 is powered down. This can allow, for example, an internal state machine within the power domain 230 to detect wake event signals, the signals indicating a wake up from the sleep mode. For example, in one embodiment, the wake event signals are detected by the AO block (e.g., AO functional block 230). This block is on the AO rail. The one or more of the functional blocks 211-214 that normally process the events are powered down. Once power is returned, the functional blocks 211-214 can process the event, and resume normal operation.
In accordance with embodiments of the present invention, the one or more input output pins between the flexible pin configuration component 240 and the peripheral devices 250 will have their state reliably maintained even though the functional blocks of the processor 210 are powered down. The state will be maintained such that the entry and exit from sleep mode will be completely transparent to the peripheral devices 250.
In one embodiment, different voltage rails are provided to accommodate the different peripheral voltages. For example, a camera can work at one voltage while a WiFi chipset within the camera is working at another voltage. Waking-up from the standard signal of a peripheral (e.g., such as an interrupt) avoids creating additional pads just for this function, which would require a specific voltage choice and voltage translators on the board. So some few selected pads are used as a generic input in the processor active mode but as a wake-up in the processor standby mode, thus at the correct voltage. While some parts of the processor are powered off in standby, the system should be able to power them up again automatically after detecting a wake-up event. In one embodiment, this is done by a hardware control circuit on the AO voltage rail (e.g., AO functional block 230).
In normal operation, the selected function drives the output via the output multiplexer 301 as described above. The output of the multiplexer 301 is coupled to the input output pin 330 via a multiplexer 411 and the buffer 321 as shown. Similarly, in normal operation, the output enable 311 turns on the buffer 321 via the multiplexer 412 as shown. During sleep mode, a sleep mode enable 430 in conjunction with a capture signal 420 causes the storage element 401 and the storage element 402 to store the current value (e.g., logical one, logical zero, etc.) of the output multiplexer 301 and the current value of the output enable signal (e.g., the output enable multiplexer 311 as described above). This causes the input output pin 330 to be driven by the output of the storage element 401, which would be the previously stored current value from the multiplexer 301. Thus, after sleep mode entry, the functional blocks driving the inputs of the multiplexer 301 can be inactive. Additionally, in the
With respect to the input enable 312, the input enable 312 has its current value saved by the storage element 403 in accordance with the capture signal 420 and the sleep mode enable 430. Thus, the input enable 312 can control the input buffer 322 even though the functional block that generates the input enable signal 312 is in sleep mode. The input 302 routes signals from the input output pin 330 to be shared by the appropriate functional blocks.
Thus, embodiments of the present invention limit the use of a central register to store state data for the input output pins of the device. Embodiment of the present invention utilize storage element as described above to enable each pad or input output pin to recall it's last state. For example, when the software executing on the chip wishes to put the chip in deep sleep mode, it simply cleanly tells each interface (e.g. UART, SPI, HDD, USB etc.) to enter it's inactive state (if it is not already there) and then asserts a HW signal (e.g., sleep mode enable) to each of the pads to capture their current value (e.g., input, output 0, output 1, hi-Z, open drain, etc.) and hold that value without the core of the chip being awake. Once this is done, the core can safely be powered down into a deep sleep mode. It should be noted that the constituent logic for performing the state retention function is comparatively small, and is located near each signal input output pin. Thus, very few top level signals are required to clock these storage elements, as these signals can be shared for all affected input-output pins, and don't need to be point to point routed from the always on the core (e.g., core 230 of
It should be noted that in one embodiment, the system 400 is configured such that the output enable 311 is not used to exit the sleep mode. In such a configuration, a separate control register can be utilized to disable the sleep mode on an interface by interface basis. The use of separate control registers to disable the sleep mode provides an advantage in that there can be less impact on signal timing.
The
In one embodiment, the de-assertion to re-assertion of the output enable signal for each capture component would switch each output from driving the latched idle state to the value driven from the core once software had reinitialized the peripheral controller to match the idle state. This is necessary for interfaces where the reset state of the controller may not match the idle sate.
The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
4868832 | Marrington et al. | Sep 1989 | A |
5109494 | Ehlig et al. | Apr 1992 | A |
5142690 | McMullan, Jr. et al. | Aug 1992 | A |
5220660 | Yoshizawa et al. | Jun 1993 | A |
5230067 | Buch | Jul 1993 | A |
5274828 | McAdams | Dec 1993 | A |
5305443 | Franzo | Apr 1994 | A |
5339445 | Gasztonyi | Aug 1994 | A |
5386552 | Garney | Jan 1995 | A |
5388265 | Volk | Feb 1995 | A |
5396635 | Fung | Mar 1995 | A |
5402492 | Goodman et al. | Mar 1995 | A |
5408668 | Tornai | Apr 1995 | A |
5446904 | Belt et al. | Aug 1995 | A |
5471189 | Dietz et al. | Nov 1995 | A |
5510740 | Farrell et al. | Apr 1996 | A |
5517441 | Dietz et al. | May 1996 | A |
5524249 | Suboh | Jun 1996 | A |
5528610 | Edler et al. | Jun 1996 | A |
5530845 | Hiatt et al. | Jun 1996 | A |
5535398 | Biggs et al. | Jul 1996 | A |
5557777 | Culbert | Sep 1996 | A |
5586308 | Hawkins et al. | Dec 1996 | A |
5588099 | Mogilevsky et al. | Dec 1996 | A |
5594367 | Trimberger et al. | Jan 1997 | A |
5594874 | Narayanan et al. | Jan 1997 | A |
5649222 | Mogilevsky | Jul 1997 | A |
5659687 | Kim et al. | Aug 1997 | A |
5687382 | Kojima et al. | Nov 1997 | A |
5737613 | Mensch, Jr. | Apr 1998 | A |
5752050 | Hernandez et al. | May 1998 | A |
5758133 | Envoy | May 1998 | A |
5790877 | Nishiyama et al. | Aug 1998 | A |
5862368 | Miller et al. | Jan 1999 | A |
5869979 | Bocchino | Feb 1999 | A |
5898879 | Kim | Apr 1999 | A |
5951689 | Evoy et al. | Sep 1999 | A |
5963219 | Choi | Oct 1999 | A |
6029170 | Garger et al. | Feb 2000 | A |
6034544 | Agrawal et al. | Mar 2000 | A |
6040845 | Melo et al. | Mar 2000 | A |
6057705 | Wojewoda et al. | May 2000 | A |
6061679 | Bournas et al. | May 2000 | A |
6134167 | Atkinson | Oct 2000 | A |
6163583 | Lin et al. | Dec 2000 | A |
6169546 | Bogdan | Jan 2001 | B1 |
6169984 | Bogdan | Jan 2001 | B1 |
6178523 | Klein | Jan 2001 | B1 |
6191969 | Pereira | Feb 2001 | B1 |
6191970 | Pereira | Feb 2001 | B1 |
6212645 | Tjandrasuwita | Apr 2001 | B1 |
6216234 | Sager et al. | Apr 2001 | B1 |
6243280 | Wong et al. | Jun 2001 | B1 |
6249284 | Bogdan | Jun 2001 | B1 |
6266776 | Sakai | Jul 2001 | B1 |
6347370 | Grimsrud | Feb 2002 | B1 |
6397340 | Watts, Jr. et al. | May 2002 | B2 |
6523128 | Stapleton et al. | Feb 2003 | B1 |
6538947 | Ahmed et al. | Mar 2003 | B2 |
6552596 | Cowles et al. | Apr 2003 | B2 |
6584003 | Kim et al. | Jun 2003 | B1 |
6600575 | Kohara | Jul 2003 | B1 |
6678831 | Mustafa et al. | Jan 2004 | B1 |
6694451 | Atkinson | Feb 2004 | B2 |
6717435 | Mitsumori et al. | Apr 2004 | B1 |
6728959 | Merkey | Apr 2004 | B1 |
6754837 | Helms | Jun 2004 | B1 |
6760850 | Atkinson et al. | Jul 2004 | B1 |
6762768 | Dilliplane | Jul 2004 | B2 |
6765958 | Dowling | Jul 2004 | B1 |
6768659 | Gillingham et al. | Jul 2004 | B2 |
6775776 | Vogt et al. | Aug 2004 | B1 |
6804267 | Long et al. | Oct 2004 | B1 |
6804763 | Stockdale et al. | Oct 2004 | B1 |
6816809 | Circenis | Nov 2004 | B2 |
6845434 | Lin | Jan 2005 | B2 |
6845456 | Menezes et al. | Jan 2005 | B1 |
6901298 | Govindaraj et al. | May 2005 | B1 |
6990594 | Kim | Jan 2006 | B2 |
7043649 | Terrell, II | May 2006 | B2 |
7058834 | Woods et al. | Jun 2006 | B2 |
7174472 | Hill | Feb 2007 | B2 |
7187205 | Ramaraju et al. | Mar 2007 | B2 |
7243318 | Mirza et al. | Jul 2007 | B1 |
7256232 | Lamaze et al. | Aug 2007 | B2 |
7285980 | Bansal et al. | Oct 2007 | B2 |
7372298 | Chu et al. | May 2008 | B2 |
7401240 | Heller et al. | Jul 2008 | B2 |
7426647 | Fleck et al. | Sep 2008 | B2 |
7428644 | Jeddeloh et al. | Sep 2008 | B2 |
7432921 | Oshima et al. | Oct 2008 | B2 |
7434072 | Peirson et al. | Oct 2008 | B2 |
7529958 | Roth et al. | May 2009 | B2 |
7583104 | Simmons et al. | Sep 2009 | B2 |
7599317 | Schaap | Oct 2009 | B2 |
7624215 | Axford et al. | Nov 2009 | B2 |
7631117 | Aida et al. | Dec 2009 | B2 |
7698586 | Kim et al. | Apr 2010 | B2 |
7739533 | Rauschmayer et al. | Jun 2010 | B2 |
20010044909 | Oh et al. | Nov 2001 | A1 |
20020172008 | Michael | Nov 2002 | A1 |
20030023825 | Woo et al. | Jan 2003 | A1 |
20030093702 | Luo et al. | May 2003 | A1 |
20030204757 | Flynn | Oct 2003 | A1 |
20030204761 | D'Alessio | Oct 2003 | A1 |
20030206164 | Juenger | Nov 2003 | A1 |
20030233525 | Reeves | Dec 2003 | A1 |
20040128574 | Ricci et al. | Jul 2004 | A1 |
20040224728 | Dacosta et al. | Nov 2004 | A1 |
20050015321 | Vindekilde | Jan 2005 | A1 |
20050125705 | Cheng et al. | Jun 2005 | A1 |
20060184808 | Chua-Eoan et al. | Aug 2006 | A1 |
20060226895 | Hoshi et al. | Oct 2006 | A1 |
20070300092 | Kurita | Dec 2007 | A1 |
20080082847 | Lee et al. | Apr 2008 | A1 |
Number | Date | Country |
---|---|---|
2457170 | Aug 2009 | GB |
2004102623 | Nov 2004 | WO |
Number | Date | Country | |
---|---|---|---|
20090153211 A1 | Jun 2009 | US |