US 7114090 B2
A method is described that involves operating a computing system within a normal on state and transitioning from the normal on state to a main CPU/OS based state. In the main CPU/OS based state one or more components of the computing system are inactivated so as to cause the computing system to consume less power in the main CPU/OS based state than in the normal on state. The computing system is able to execute software application routines on a main CPU and a main OS of the computing system while in the main CPU/OS based state.
1. A method, comprising:
a) operating a computing system within a normal on state; and
b) transitioning from said normal on state to a main Central Processing Unit/Operating System (“CPU/OS”) based state in which one or more components of said computing system other than a main CPU of said computing system are inactivated so as to cause said computing system to consume less power in said main CPU/OS based state than in said normal on state, said one or more components including a graphics controller, said computing system able to execute one or more application software routines within said main CPU/OS based state, wherein said transitioning from said normal on state to said main CPU/OS based state further comprises stripping one or more components of said computing system of their ability to control their own power consumption.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
c) transitioning from said main CPU/OS based state to a non main CPU/OS based state in which additional components of said computing system are inactivated so as to cause said computing system to consume less power in said non main CPU/OS based state than in said main CPU/OS based state, said main CPU and said main OS unable to execute application software routines within said non main CPU/OS based state, said computing system able to perform one or more tasks for a user within said non main CPU/OS based state.
13. The method of
14. The method of
15. The method of
16. The method of
17. The method of
18. The method of
19. The method of
20. The method of
21. The method of
22. The method of
23. The method of
24. A computing system, comprising:
a normal on operating state in which said computing system's main CPU is allowed to alter its power consumption states as it executes one or more application software programs; and,
a main CPU/OS based low power operating state in which:
1) said computing system's main CPU is forced to execute one or more application software programs within a lowest power consumption state at which application software programs can be executed; and,
2) one or more components of said computing system that are allowed to regulate their own power consumption during said normal on state are not allowed to regulate their own power consumption during said main CPU/OS based low power state.
25. The computing system of
26. The computing system of
27. The computing system of
28. The computing system of
29. The computing system of
30. The computing system of
31. The computing system of
32. The computing system of
33. The computing system of
34. The computing system of
a non main CPU/OS based operating state in which:
1) said main CPU and a main OS that is executed upon said main CPU are put to sleep;
2) one or more I/O units that emanate from an I/O controller are inactivated; and,
3) a controller that is active within said normal on operating state and said main CPU/OS based low power operating state remains active within said non main CPU/OS based operating state.
35. A machine readable medium having stored thereon instructions which, when executed by a CPU, cause said CPU to perform a method, said method comprising:
a) operating within a normal on state by supporting the execution of one or more application software programs while allowing each one of one or more components of a computing system that said CPU is a part of to control its own power consumption; and,
b) operating within a low power state by supporting the execution of at least one of said application software programs while not allowing each one of said one or more components to control its own power consumption and while each one of said one or more components are forced to operate within a low power consumption state.
36. The machine readable medium of
37. The machine readable medium of
38. The machine readable medium of
39. The machine readable medium of
40. The machine readable medium of
41. The machine readable medium of
42. The machine readable medium of
43. The machine readable medium of
44. The machine readable medium of
45. The machine readable medium of
46. The machine readable medium of
47. The machine readable medium of
48. The machine readable medium of
49. The machine readable medium of
50. An apparatus, comprising:
circuitry that remains powered while a computing system's main CPU and main OS are sleeping as said computing system operates within a non main CPU/OS based operating state, said circuitry further comprising:
a) a first input to receive a first indication, said first indication part of a first state transition process of said computing system to said non main CPU/OS based operating state;
b) a second input to receive a second indication, said second indication part of a second state transition process of said computing system from said non main CPU/OS based operating state; and,
c) wake up/sleep logic that is responsive to said first indication and said second indication, said wake up /sleep logic to:
(i) establish a first power scheme in response to said first indication, said first power scheme to power said computing system while said computing system is within said non main CPU based operating state and
(ii) establish a second power scheme in response to said second indication, where, said second power scheme allows said main CPU and said main OS to wake up.
51. The apparatus of
52. The apparatus of
53. The apparatus of
54. The apparatus of
55. The apparatus of
56. The apparatus of
57. The apparatus of
58. The apparatus of
59. The apparatus of
60. The apparatus of
61. The apparatus of
The field of invention relates generally to computing; and, more specifically, to a computing system having operational low power states.
A. Computing Systems
The graphics controller 105 and display 106 provide the computer generated images observed by the user of the computing system 100. The I/O controller of the memory and I/O control function 103 is responsible for managing access to the system memory 104 (and/or CPU 101) for various I/O units 108 1 through 108 N and 109, 111, 113 and 115. I/O units are typically viewed as functional units that send/receive information to/from the computing system (e.g., a networking adapter, a MODEM, a wireless interface, a keyboard, a mouse, etc.) and/or functional units used for storing the computing system's information within the computing system 100 (e.g., a hard disk drive unit).
Various I/O units are frequently found within a computing system; and, moreover, various types of interfaces for communication between an I/O unit and the I/O control function are frequently found within a computing system. Often, these interfaces are defined by an industry standard. The exemplary computing system architecture of
Note that a different number of interfaces may be entertained from computer system to computer system; and, different interface types (e.g., in terms of the maximum number of I/O units per interface, interfacing technique, etc.) may be entertained from computer system to computer system. As just one possible implementation, using the computing system of
B. Computing System State Diagram
According to the depiction of
A third state 203 refers to any of one or more states where the computing system is recognized as “sleep”. For sleep states, the operating environment of a system within the “normal on” state 201 (e.g., the state and data of various software routines) are saved prior to the CPU of the computer being entered into a lower power consumption state. The sleep state(s) 203 are aimed at saving power consumed by the CPU over a lull period in the continuous use of the computing system. That is, for example, if a user is using a computing system in the normal on state 201 (e.g., typing a document) and then becomes distracted so as to temporarily refrain from such use (e.g., to answer a telephone call)—the computing system can automatically transition from the normal on state 201 to a sleep state 202 to reduce system power consumption.
Here, the software operating environment of the computing system (e.g., including the document being written), which is also referred to as “context” or “the context”, is saved beforehand. As a consequence, when the user returns to use the computing system after the distraction is complete, the computing system can automatically present the user with the environment that existed when the distraction arose (by recalling the saved context) as part of the transition back to the normal state 201 from the sleep state 203. The ACPI specification recognizes a collection of different sleep states (notably the “S1” “S2”, “S3” and “S4” states) each having its own respective balance between power savings and delay when returning to the “normal on” state 201 (here, the S1, S2 and S3 states are recognized as being various flavors of “standby” and the S4 state is a “hibernate” state).
A problem with prior art sleep states, however, is that the CPU is unable to perform any useful work. As such, although power savings are recognized, any tasks that may have been useful to perform during the time period over which the computing system was sleep are impossible to implement.
The invention may be best understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the invention. In the drawings:
State Diagram and Computing System Having Operational Low Power States
In order for a computing system to perform useful tasks from within a low power consumption state, special states need to be designed into the system. In particular, these special states should be configured to have a sufficient amount of functional prowess so that one or more useful tasks can be executed; while, at the same time, consume power at a rate that is lower than those associated with the “normal on” state. Here,
According to the state diagram scheme observed in
A more thorough discussion of the “main CPU/OS low power” state 304 and the “non main CPU/OS lower power” state 305 is provided immediately below.
1) Computing system components other than the CPU that have the intelligence/ability to dynamically regulate their own power consumption are stripped of their authority to dynamically regulate their own power consumption; and, instead, are forced into their lowest power state. For example, in the case of an ACPI compliant system, various components within a computing system (including the display, graphics controller, various I/O devices (such as the hard disk drive), etc.) are given the authority to regulate their own power consumption (e.g., based upon observed usage through their device driver) according to a plurality of states D0 through D3; where, the D0 state is the highest power operating state and the D3 state is the lowest power non-operating state (D1 and D2 also being non-operating states with increasingly lower power). In an embodiment, the “main CPU/OS based low power” state 304 deliberately configures certain components to permanently remain within the D3 state so long as the system resides within the “main CPU/OS based low power” state 304. Non ACPI systems may be similarly configured. In
2) If the CPU is capable of dynamically adjusting its power consumption amongst a plurality of different power consumption states (e.g., by dynamically changing its internal voltage levels and/or clocking frequencies), the CPU is forced to operate within the lowest power state (or amongst the lowest power states). For example, Intel SpeedStep™ Technology based CPUs may have different “Pn” states: P0 through P4; where, P0 is the highest power state and P4 is the lowest power state. A SpeedStep™ Technology based CPU reduces power by reducing both its voltage and frequency to get a dramatic decrease in power with a moderate decrease in performance. In an embodiment that employs a Speedstep™ Technology based CPU, while the computing system is within the “non main CPU/OS low power” state 304, the CPU is forced to operate in the P4 state (although some application policies may allow for special exceptions for entry into the next lowest power state P3). Note that other CPUs may exist that reduce power by reducing either or both voltage and frequency—yet—are not SpeedStep™ Technology based CPUs. As such, the technique presently being described may be implemented with both SpeedStep™ Technology based CPUs and non SpeedStep™ based CPUs. In further embodiments, to the extent the internal clocking frequency can be adjusted while within a lowest power state, the clock frequency is set to the lowest clock frequency that the processor can properly operate at.
3) Defining application software programs that are not to be used within the “non main CPU/OS low power” state 304 and suspending their use during this state. Any software task or application that is deemed not useful or needed for the implementation of “main CPU/OS based” low power state 304 and the “non main CPU/OS based” lower power state 305 could be suspended to achieve very low system power. Examples may include a screen saver, a word processing application, a presentation/graphics application, and/or a spreadsheet application program. Moreover, any batch computing jobs could be suspended during operation in states 504 and 505.
4) In a computing system having multiple main CPUs (i.e., CPU 101 of
Exemplary Implementation: Complete Cordless Telephone System
The incorporation of states 301, 304 and 305 (e.g., as per the computing system powering profile observed in
A basic implementation of the aforementioned complete cordless telephone system described above, as observed in
Note that the functional implementations described just above are consistent with their corresponding functional/processing capacity and power consumption requirements. That is, a basic cordless telephone function can easily be constructed from a few simple components and therefore: 1) can be easily integrated onto a single I/O unit (such as I/O unit 408 1); and, 2) will consume small amounts of power (relative to an entire computing system). As such, a basic cordless telephone is an ideal function to be designed into I/O unit 408 1 as one of the computing system's “non main CPU/OS based lower power” state 505 functions.
By contrast, an answering machine is a more complicated function that requires storage resources for both: 1) the recorded message to be played for a caller whose call has not been answered; and, 2) the caller's recorded message (if any). As such, although an answering machine can be integrated onto an I/O unit, it is probably more economical to use the storage resources of the computing system's main memory 404 for storing the recorded messages. Moreover, the main CPU 401 and main OS can be used to execute application software that manages the handling of recorded message playback (to both the caller whose call is not being answered and the computing system user who desires to hear a caller's message).
Note also that an answering machine often records a message when the user is not available to answer a call. As such, in most circumstances it is not an inconvenience if the display 406 and graphics controller 405 are not powered on (e.g., if the user is not at home to answer a phone call, the user is also not able to interface to the computing system through the display 406). Moreover, given that the main CPU 401 and main OS can be used to assist the operation of the answering machine as described just above, note that the answering machine tasks are by no means “high performance” tasks for a typical computing system CPU 401. As a consequence, these tasks can be easily implemented if the main CPU 401 is configured to have a reduced performance/power consumption state (e.g., by being forced to use lower internal voltages and/or lower clock frequencies).
Taking all of the aforementioned characteristics of an answering machine together, note that the answering machine function is well suited for the “main CPU/OS based low power” state 504. That is, referring to
Lastly, the Net Meeting function of the complete cordless telephone system of
Because the computing system can transition across the various states in the state diagram of
The computing system can also therefore be viewed as a hybrid between a traditional “high power” computing system and a low end appliance (in this case, a basic cordless telephone). When the user uses the system for traditional computing purposes (e.g., document writing, web surfing, etc.), the system behaves as a traditional computing system; and, when the user is not using the system as a traditional computing system, the system degrades (in terms of functionality and power consumption) into a basic appliance (in this case, a basic cordless telephone function). As the state diagram observed in
Moreover, continuing with the example provided just above, if the user, after temporarily abandoning the computer, receives a telephone call and cannot answer the telephone call; then, the computing system can trigger a state transition from the lowest power operable state 505 to the intermediate power operable state 504 so as to convert itself from a basic cordless telephone (as represented by state 505) into a basic cordless telephone having an answering machine (as represented by state 504). In this case, note that the system is able to tweak its functional abilities and corresponding power consumption in light of the overall uses that present themselves to the system.
Continuing with this same example, after recording the caller's message (e.g., by storing it to system memory 404), the software associated with the “main CPU/OS based low power” state 504 may be written so as to drop the system back into the lower power state 505 (absent the return of the user for traditional computing system uses) so as to convert the computing system back into a basic cordless telephone. Thus, in light of these state transitions, note that the computing system is not only able to tweak its functional capabilities and corresponding power consumption between a traditional computing system (state 501) and basic appliance (the basic cordless telephone of state 505); but, is also able to tweak its functional capabilities and corresponding power consumption to that of an “intermediate” appliance (the answering machine of state 504) as well. Moreover, the above described conversions between the various functional capabilities can be automatically triggered in light of whatever uses present themselves to the computing system over time.
An example of a complete cordless telephone system that shows a sequence of events sufficient to cause the establishment of a net meeting is provided in more detail below with respect to
State Transition Methodology and Supporting Hardware
Given that the above example describes a working system that is able to transition itself between various useful states 501, 504, 505 (each having their own degree of functional ability and power consumption), the manner in which these state transitions are implemented are of some import.
For example, as just a few possible instances, the computing system may recognize that no stimulus has been provided by a user over an extended period of time (e.g., the user has not used a mouse or typed on a keyboard for an extended period of time); or, the computing system may recognize that the user has closed the lid of the computing system (if the computing system is a handheld device such as a laptop/notebook computer); or, has powered off the screen/display (if the computing system is a typical “desktop” system). Note that whether the event should cause the system to enter the “main CPU/OS low power” state or a prior art sleep state 303 may be determined in light of various conditions that may vary from embodiment to embodiment and application to application. As just one example, if a lower power operational state is recognized as being “active” by setting a flag in software (e.g., if the basic cordless telephone system is recognized as being active), the system automatically transfers to a lower power operational state 304, 305 rather than a prior art sleep state 303.
In response to the detected event 602, the OS marks itself 603 as being within the “main CPU/OS low power” state. Here, recall again that the “main CPU/OS” component of this low power but operational state means that the main CPU is still operational and the main OS is still operational so that one or more application software programs can be executed on the main CPU and OS. As such, the OS marks itself 603 so that it can formally recognize that it is operating within a lower power state. Appropriate software drivers may similarly mark themselves. The “main CPU/OS based low power” state 304 is then setup or established 604. In this case, recall that state 304 may be implemented by: 1) stripping the authority of various components (e.g., the graphics controller and display) to regulate their own power consumption; and/or 2) forcing the CPU to remain within a lower performance/lower power consumption mode; and/or 3) parking certain application software programs or tasks; and/or 4) reducing the number of active main CPUs within a multiple main CPU system; and/or, 5) removing or lowering power to various components. Any software that is deactivated for the “main CPU/OS low power” state may have its context saved so that it can recall its operating environment upon return to the “normal on” state. Once the “main CPU low power state” has been set up, the system executes 605 in that state.
The transition of the system from the “main CPU/OS based low power” state to the “normal on” state, an embodiment of which is observed in
In response to the triggering event 607, the OS and applicable device drivers mark themselves 608 as being within the “normal on” state. The “normal on” state is then established/setup 609 (e.g., by granting various components to regulate their own power consumption, allowing the main CPU to operate in a higher performance/power consumption mode, re-activating “parked” application software programs and re-storing their context, re supplying various components with their proper supply power). Once the “normal on” state is established, the system executes 610 in the “normal on” state.
Because the main CPU/OS is powered/kept awake during the “main CPU/OS based low power” state, the main CPU and main OS are not put to sleep during a state transition process between the “normal on” state and the “main CPU/OS based lower power state”. By contrast, the “non main CPU/OS” component of the “non main CPU/OS based lower power” state indicates that main CPU/OS are put into an inactive state. As a consequence, transitioning to the “non main CPU/OS based lower power” involves putting the main CPU/OS into a sleep state. Generally, when the main CPU/OS “awakes” after being put to sleep, the initial phases of the “wake-up” process are similar to those processes that are executed when the entire computing system is first powered on as a whole or when the computing system comes out of a RESET condition. That is, basic BIOS software has to be loaded and executed along with the OS itself.
A principle difference, however, between a basic power up or RESET response and a return from a sleep state is that, when returning from a sleep state, the initial software loading process recognizes that the system is returning from a sleep state. This recognition, in turn, causes the reloading of the previously stored context. By contrast, when initializing from a basic power up or RESET, no such recognition or context exists. Here, one or more specific bits that are stored in specific looked for locations are used during the wake up process so that the system can determine whether it is initializing from a basic power up/RESET or a from a sleep state (and in various cases what type of sleep state the system is being awoken from). If one or more bits indicate that the system is returning from a sleep state the saved context is restored so that system can return to its original environment.
The existence of these looked for bits indicate that some limited amount of hardware associated with the CPU and/or memory controller and/or I/O controller function remains powered on during the time period in which the main CPU/OS is sleeping. An embodiment of this limited hardware is observed in
In various embodiments the circuit used for recovery from a sleep state (such as the circuit of
Referring now to
When the system is entering a traditional non operational sleep state, both the “SLP_EN” and “SLP_TYP” bits 712, 713 are used by the wake/up sleep logic 701 to establish the appropriate power supply voltage scheme within the computing system. That is, each type of traditional sleep state mode may have its own unique power supply voltage scheme (e.g., some components may have supply removed, some components may have power supply voltage reduced, etc.). Output 709 is used to implement the proper power supply scheme for the indicated traditional sleep mode. Note that if a particular sleep mode scheme logically disables one or more components rather than tweaking their power supply voltage (e.g., by shutting down an input clock, activating a disable bit, etc.), wake up/sleep logic 701 and output 709 may be used for disablement purposes as well.
The “NMC/O_EN” bit 710 is written to when the system is transitioning from the “main CPU/OS based low power” state 304 to the “non main CPU/OS based lower power” state 305. Here, because the “non main CPU/OS based lower power” state may have its own unique power supply voltage scheme (e.g., as to what specific components have their supply power removed, reduced, etc.), in one embodiment, the wake up/sleep logic 701 has a special “NMC/O_EN” input bit 710 to indicate that the power supply scheme specific to the “non main CPU/based lower power state” is to be engaged.
In an alternate embodiment the notion of “sleep”, even within the “non CPU/OS based lower power” state, is marked by the “SLP_EN” and “SLP_TYP” bits 712, 713 (e.g., by using a unique/heretofore unused combination of SLP_TYP bits to signify the “non main CPU/OS based” state). Here, the “NMC/O_EN” bit can be used as additional information that, when set, informs the wake up/sleep logic 701 that “non main CPU/OS based lower power” state is being transitioned to. Regardless, the output 709 is used to establish the proper power scheme. Again, note that if the “non main CPU/OS based lower power” state 305 logically disables one or more components rather than tweaking their power supply voltage (e.g., by shutting down an input clock, activating a disable bit, etc.), wake up/sleep logic 701 and output 709 may be used for disablement purposes as well.
The input bits 704, 714 to the multiple input OR gate 703 are wake event bits. That is, upon the arrival of an event sufficient to cause the main CPU/OS to be awoken from a traditional sleep state or the “non main CPU/OS based lower power” state, at least one of these input bits 710, 714 is activated. This causes net 708 to become active; which, in turn, causes the WAK_STS bit 702 to become active. In response to the WAK_STS bit 702 being active, the main CPU/OS recognizes that it is being awoken from a sleep state; and, then, may look to bits 704, 714 to further recognize why the system was awoken. Moreover, depending on implementation, the main CPU/OS can recognize that it is being awoken from the “non main CPU/OS based lower power” state by reading the status of the NMC/O_EN bit 710 or the status of the NMC/O_STS bit 714.
Because the NMC/O_EN bit 710 is set active to enter the system into the “non main CPU/OS based lower power” state, in one embodiment, bit 710 can be read during wake up in order to recognize that the system is waking up from the “non main CPU/OS based lower power” state. Note that, in this case, bit 710 is a read/write bit in the sense that it can be both written to (for entry into the “non main CPU/OS based lower power” state) and read from (for transition from the “non main CPU/OS based lower power” state). In this particular case, the NMC/O_STS bit 714 is used simply to notify the circuitry of
In an alternate embodiment where the SLP_TYP bits 713 are used to indicate that the system is entering the “non main CPU/OS based lower power” state (e.g., through a unique/heretofore unused combination of SLP_TYP bit settings), these same SLP_TYP bits are read from in order to recognize that the system is awaking from the “non main CPU/OS based lower power” state. In another alternate embodiment, the system is configured to look to the NMC/O_STS bit 714 to recognize whether or not the system is waking from the “non CPU/OS based lower power” state (i.e., if bit 714 is active upon wake-up; then, the system is waking up from the “non main CPU/OS based lower power” state). Bits 704 are “prior art” ACPI bits that correspond to traditional wake events (e.g., vis-à-vis the LID_STS bit, the opening of a laptop/notebook computer's previously closed lid).
As a consequence, the main CPU and OS are put to sleep 805. This involves: 1) preparing the OS and drivers for the transaction and the storing of context 803; and, 2) recording that the main CPU/OS is being put to sleep because it is entering the “non main CPU/OS based lower power” state (e.g., by setting the NMC/O_EN bit 710 of
In response to the BIOS being loaded so as to initialize appropriate hardware, control of the system is handed off to the main OS which determines 809 whether or not the wake up event 807 corresponds to a transition from a traditional sleep state 303 or from the “non CPU/OS based lower power” state 305. Here, depending on implementation, the main OS can refer to bits 712, 710 and/or 714 of
Here, if the non main CPU/OS lower power subsystem includes a processor that executes software (as explained in more detail below with respect to
Note that, bit 710 of
Non Main CPU/OS Based Lower Power State Hardware and Software Design
By contrast more elaborate non main CPU/OS state 305 hardware implementations are presently envisioned that can be viewed as lower power/lower performance computing systems having identifiable software and I/O.
Hence, according to the embodiment of
Apart from the distinctive features highlighted just above, note that the computing system used to implement the “non main CPU/OS based lower power” state may also share various I/O units with the main CPU/OS computing system. In the embodiment of
In one embodiment, interfaces 910, 912, 914 and 916 (which are inactive during the “non main CPU/OS based lower power” state) respectively correspond to: 1) for interface 910, a serial port interface (in which case MODEM 909 may further correspond to a V.90 MODEM 909); 2) for interface 912, a USB interface for an IEEE 802.11 based network interface card; 3) for interface 914, a serial interface for a General Packet Radio Services (GPRS) wireless modem; for 4) for interface 916, an ATA-100 interface for an IDE Hard disk Drive (HDD). In further embodiments, a Universal Serial Bus (USB) interface that emanates from the I/O controller portion of the memory and I/O control function 903 (not shown in
In another embodiment the system bus 923 can be the same system bus 907. In this case the main CPU 901 can access devices 908 1 to 908 N in addition to the Controller 917 while in the “normal on” State 301. However the Controller 917 can then access devices 908 1 to 908 N through the system bus 923/907 (which in this embodiment is the same bus, but not shown in
Note that the non main CPU/OS system may include its own distinctive user interface 925. The embodiment of
Examples of data which could be accessed on this closed lid user interface are calendar, contact and to do information; commonly referred to as Personal Information Management (PIM) data; however it is not limited to this type of data and can include any information which might be important for an end user that uses a notebook computer in a “closed lid” state (e.g. current sales data for a traveling salesperson). Additionally the overall computing system may allow for the control of functions within the notebook through a closed lid user interface. An example of this could be the playing of MP3 music files stored on the computer through a wireless headset. In this case the user could control the playing of music (song selection, volume, and other attributes) through the closed lid user interface.
Referring back to
The right hand side of
Application software 1005, 1006 may also reside on the non main CPU/OS computing system. Application software can typically broken down into two types: 1) data storage 1005 (which is directed to the use/management of stored data); and, 2) functional 1006 (which are directed to useful functions to be performed by the underlying controller 917).
As with typically software environments, the non main CPU/OS computing system applications 1005, 1006 interface with the non main CPU/OS computing system operating system through an API 1001.
When in the “non main CPU/OS based lower power” state, the non main CPU/OS computing system (including software components 1001 through 1006) operates independently. Also, because the main CPU/OS is inactive during the “non main CPU/OS based lower power” state, software components 1007 through 1012 that run on the main CPU/OS are likewise inactive. However, when the overall system is within the “normal active” state or the “main CPU/OS based low power state” various software components that run on the main CPU/OS are active; and, moreover, because the non main CPU/OS computing system remains active during either of these states, the software from both systems may work together as a cooperative whole.
For example, by being cognizant of certain resources that are under the control of the non main CPU/OS computing system, the main CPU/OS side software may be configured to “use” these resources. For example, software routines on the main CPU/OS computing system may be configured to utilize data storage or memory resources that are distinctive to the non main CPU/OS computing system (e.g., such as units 918, 921 and 922 of
In order for the main CPU/OS software 1007 through 1012 to “work with” the non main CPU/OS software 1001 through 1006, such software may send messages to the non main CPU/OS controller 917 to request certain actions or can pass data objects for storage 1003. The application software may again be broken down into data applications 1009, 1010 and functional applications 1013, 1011. However, some of these applications 1009, 1013 may be pre-written with an understanding that resources on a non-main CPU/OS computing system are available; whereas, other (e.g., older “legacy”) software applications 1010, 1011 may have been written without any recognition or cognizance that such resources exist. For those software applications of the later type, “proxy” software 1007, 1008 that acts as a “glue layer” may be used to force or otherwise cause the legacy applications to be able to operate cooperatively with the non main CPU/OS system resources. Functional blocks 1002, 1003 and 1004 allow the User to interact with the User Interface 925 to display PIM and other information or to control some functions like playing MP3 files. The manager 1002 accepts data objects which are then stored in the storage block 1003. These data objects represent data to be displayed on the user interface (PIM or other data) and originate in data applications 1005, 1010 or 1009. The applications 1010 and 1007 operate in the “normal on” state 301 and are responsible for providing data objects to be stored in storage 1003 through the API 1001 via the Manager 1002. Examples of Legacy Data Applications 1010 are present versions of Outlook™ and Lotus Notes™ which contain PIM data but have no knowledge of how to create data objects that the User Interface 1004 can understand or how to move these objects to the Storage 1003. The Proxy Application 1007 is responsible for this function, and essentially pulls the appropriate date from the Legacy application, formats it into the correct data object, and then passes these data objects to the Manager 1002 via the API 1001 to be stored by the Storage 1003. In the future these types of applications will build in these exporting functions and are represented by the Data Application 1009.
Functions that will operate in the “main CPU/OS based” state 304 and are controlled by this user interface 925/1004 include applications 1011, 1008 and 1013. Again Legacy Function represents something that is unaware of the non-main CPU/OS functions, and therefore require a main CPU/OS Proxy driver to interface with these functions. An example of one such application is a legacy media player which can play music files. In this case a proxy application 1008 can be written to allow the User Interface 1004 to control this application while in the main CPU/OS based state 304. This application would allow the user to control playing of media songs stored on the subsystems available in the main CPU/OS based state 304 and then output through some audio interface. In the future these types of applications will build in these proxy functions and are represented by the Function Application 1013.
Functions that operate in the non main CPU/OS based state 305 reside on the right side of the diagram. The User Interface 1004 is responsible for reacting to user button presses (Keyboard/Buttons 920) and then displaying the data objects on the Display 919. Embedded within the data objects are navigation commands that tell the User Interface which objects to display next based on which button is pressed. Additionally the Manager will allow the user to control MP3 playback through an MP3 non main CPU/OS based lower power state Function Apps 1006; which is responsible for getting the MP3 file from storage 1003, decoding the file and sending the output through a Bluetooth interface to a wireless headset.
An example of a data storage application 1005 is an application that connects back to an enterprise server to retrieve new PIM data objects which can then be put in Storage 1003 for access by the user through the User Interface 1004. In this case the application 1005 would access these new data objects through a wireless communication device operating in the non main CPU/OS based state 305 (such as the WLAN 911 or WWAN 913)
At point in time T2 a call is made into the cordless telephone and no one answers. As a consequence a transition into the “main CPU/OS based low power state” 504, 1102 is caused to realize the answering machine function. Over a time period T3, the answering machine function answers the phone, plays a message to the caller, records the callers message and causes an LED to repeatedly flash on the user interface that is distinctive to the non main CPU/OS computing system (e.g., LED 924 of
Upon completion of the above functions, at time T4, the overall computing system transitions back into the “non main CPU/OS based lower power” state 505, 1103. At time T5, with the LED continuing to flash (i.e., it does not stop flashing until the user listens to the recorded message), the phone again rings. However, this time, the user answers the phone and recognizes that the present call is in regard to a net meeting that needs to be established. The user presses a “net meeting” button found on the non main CPU/OS computing system user interface (e.g., associated with keyboards/buttons 920 of
The pressing of the “net meeting” button causes a first transition into the “main CPU/OS based lower power” state 505, 1104 and a second transition into the “normal on” state 501, 1105. In the “normal on” state, the caller ID of the incoming phone call and the resources of the main CPU/OS are utilized to establish a net meeting and perform work there under (e.g., by modifying a common document with another individual over the internet). The LED continues to flash under the control of the non main CPU/OS computing system because the user has still not listened to the recorded message.
It is also to be understood that because embodiments of the present teachings may be implemented as one or more software programs, embodiments of the present teachings may be implemented or realized upon or within a machine readable medium. A machine readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine readable medium includes read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.