A system and method are described for utilizing task urgency information when making power management decisions. For example, one embodiment of a method for managing power states of a processor comprises: executing a first power management state machine based on a first urgency level associated with a first task; detecting the execution of a second task having a second urgency level associated therewith; if the second urgency level is greater than the first urgency level, then executing a second power management state machine associated with the second urgency level.
|
1. A method comprising:
a processor executing a first task having a first urgency level;
the processor executing a first power management state machine that specifies a first plurality of processor power states and one or more conditions for transitioning between the first plurality of processor power states;
the processor executing a second task having a second urgency level; and
in response to determining that the second urgency level is greater than the first urgency level, the processor executing a second power management state machine, wherein the second power management state machine specifies a second plurality of processor power states and one or more conditions for transitioning between the second plurality of processor power states, and wherein the second plurality of processor power states includes a higher frequency power state than any of the power states in the first plurality of power states.
23. A non-transitory machine-readable medium having program code stored thereon which, when executed by a processor, causes the processor to perform the operations of:
executing, in response to the processor executing a first task having a first urgency level, a first power management state machine that specifies a first plurality of processor power states and one or more conditions for transitioning between the first plurality of processor power states;
executing, in response to the processor executing a second task having a second urgency level that is greater than the first urgency level, a second power management state machine wherein the second power management state machine specifies a second plurality of processor power states and one or more conditions for transitioning between the second plurality of processor power states, and wherein the second plurality of processor power states includes a higher frequency power state than any of the power states in the first plurality of power states.
12. An apparatus comprising:
a memory configured to store program code; and
a processor configured to execute the program code to:
execute a first task having a first urgency level;
execute a first power management state machine in response to the processor executing the first task, wherein the first power management state machine specifies a first plurality of processor power states and one or more conditions for transitioning between the first plurality of processor power states;
execute a second task having a second urgency level that is greater than the first urgency level;
execute a second power management state machine in response to the processor executing the second task, wherein the second power management state machine specifies a second plurality of processor power states and one or more conditions for transitioning between the second plurality of processor power states, and wherein the second plurality of processor power states includes a higher frequency power state than any of the power states in the first plurality of power states.
2. The method as in
3. The method as in
4. The method as in
5. The method as in
continuing to execute the first power management state machine while the second power management state machine is executed.
6. The method as in
detecting the execution of a third task having a third urgency level associated therewith; and
if the third urgency level is greater than the second urgency level, then executing a third power management state machine associated with the third urgency level.
7. The method as in
continuing to execute the first and second power management state machines while the third power management state machine is executed.
8. The method as in
9. The method as in
10. The method as in
11. The method as in
13. The apparatus as in
14. The apparatus as in
15. The apparatus as in
16. The apparatus as in
continuing to execute the first power management state machine while the second power management state machine is executed.
17. The apparatus as in
detecting the execution of a third task having a third urgency level associated therewith; and
if the third urgency level is greater than the second urgency level, then executing a third power management state machine associated with the third urgency level.
18. The apparatus as in
continuing to execute the first and second power management state machines while the third power management state machine is executed.
19. The apparatus as in
20. The apparatus as in
21. The apparatus as in
22. The apparatus as in
24. The machine-readable medium as in
25. The machine-readable medium as in
26. The machine-readable medium as in
27. The machine-readable medium as in
continuing to execute the first power management state machine while the second power management state machine is executed.
28. The machine-readable medium as in
detecting the execution of a third task having a third urgency level associated therewith; and
if the third urgency level is greater than the second urgency level, then executing a third power management state machine associated with the third urgency level.
29. The machine-readable medium as in
continuing to execute the first and second power management state machines while the third power management state machine is executed.
30. The machine-readable medium as in
31. The machine-readable medium as in
32. The machine-readable medium as in
33. The machine-readable medium as in
|
1. Field of the Invention
This invention relates generally to the field of computing systems. More particularly, the invention relates to an improved machine-readable medium and method for warming a CPU to reduce interrupt latency.
2. Description of Related Art
Power management on a data processing system often involves techniques for reducing the consumption of power by components in the data processing system. The data processing system may be a laptop or otherwise portable computer, such as a handheld general purpose computer, a cellular telephone, or a tablet such as iPad. The management of power consumption in a portable device which is powered by a battery is particularly important because better power management usually results in the ability to use the portable device for a longer period of time when it is powered by one or more batteries and for a given duty cycle, in smaller a physical design of the product.
Conventional systems typically utilize timers to indicate when a subsystem should be turned off after a period of inactivity. For example, the motors in a hard drive storage system are typically turned off after a predetermined period of inactivity of the hard drive system. Similarly, the backlight or other light source of a display system may be turned off in response to user inactivity which exceeds a predetermined period of time. In both cases, the power management technique is based on the use of a timer which determines when the period of inactivity exceeds a selected duration.
A typical technique for managing power consumption involves switching operation of a data processing system between different voltage and frequency pairs or “operating points.” In general, a first operating point defined by voltage V1 and operating frequency F1 will consume less power than a second operating point at voltage V2 and operating frequency F2 if V1 is less than V2 and F1 is less than F2.
Certain systems provide the capability to switch power completely off (e.g. set the operating voltage at V=0) if no use is being made of a particular subsystem. For example, certain system-on-a-chip (SOC) systems provide a power gating feature which allows for particular subsystems to be turned off completely if they are not being used.
On some modern microarchitectures, a range of Central Processing Unit (“CPU”) “idle” states are defined to limit energy consumption. These idle states may come with a cost. For urgent tasks (such as real-time or deadline-driven tasks), running at reduced clock speed can cause responsiveness problems or incorrectness. For example, the latency to resume execution can be many microseconds, and its magnitude and unpredictability can pose great challenges to operating systems developers. One important difficulty occurs if the system is concerned with the exact moment that an interrupt is triggered with high precision. With long latencies to exit idle states, it may not be possible to take a timestamp until long after the triggering event.
Additionally, clock speeds may not be adjusted to an optimally low level using current implementations due to “background” tasks which run indefinitely but have no speed requirements. The variety of workloads and unpredictability of CPU load over time make it very difficult to craft a frequency-management algorithm which achieves both responsiveness for high-importance tasks and low power consumption under low-priority load.
Accordingly, what is needed is a more intelligent way to both reduce power consumption and improve responsiveness for certain tasks.
A system and method are described for utilizing task urgency information when making power management decisions. For example, one embodiment of a method for managing power states of a processor comprises: executing a first power management state machine based on a first urgency level associated with a first task; detecting the execution of a second task having a second urgency level associated therewith; if the second urgency level is greater than the first urgency level, then executing a second power management state machine associated with the second urgency level.
A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which:
Described below are embodiments of an apparatus, method, and machine-readable medium for incorporating task urgency information in frequency transition decisions. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the embodiments of the invention described below. It will be apparent, however, to one skilled in the art that the embodiments of the invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the embodiments of the invention.
The co-pending patent application entitled “Improved Timer Interrupt Latency,” Ser. No. 13/174,688, Filed Jun. 30, 2011 (hereinafter “Co-pending Application”), which is assigned to the assignee of the present patent application describes a variety of techniques improving timer interrupt latency. These techniques will first be described below to provide an overview, followed by a detailed description of new techniques for reducing interrupt latency and managing clock speed based on task urgency.
Various embodiments and aspects of the inventions will be described with reference to details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of various embodiments of the present invention. However, in certain instances, well-known or conventional details are not described in order to provide a concise discussion of embodiments of the present inventions.
Exemplary embodiments of methods, apparatuses, and systems to reduce timer interrupt latency are described herein. The cost of exiting idle states to service timer interrupts for a data processing system is overcome while still allowing aggressive use of a variety of idle states, and while allowing higher levels of software abstraction to ignore those states. Moreover, the risk of interrupts firing earlier than they are needed is minimized by restoring original deadlines on exit from an idle state.
In at least some embodiments, an indication that a subsystem (e.g., a processor) is about to enter an idle state is received, and an original fire time for a next timer interrupt is determined. The original fire time indicates when the timer that is already present in the system has been scheduled to fire. An idle state for a subsystem can be selected from a plurality of idle states. A new fire time can be determined based on the selected idle state. The next timer interrupt is rescheduled to the new fire time, as described in further detail below.
In at least some embodiments, the timers that are already present in the system and that have already been requested can be rescheduled depending upon an idle state of the system and how far the timers are along a time line from a current time, as described in further detail below.
In at least some embodiments, a subsystem exits an idle state, and a latency of the subsystem in exiting the idle state is measured at a current time. The measured latency is added to a running average of latencies for that idle state. A previous latency is recomputed based on the running average. The latency is recomputed to adjust the original fire time for a next timer interrupt, as described in further detail below.
The present invention can relate to an apparatus for performing one or more of the operations described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a machine (e.g. computer) readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a bus.
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.
At least certain embodiments of the inventions may be part of a digital media player, such as a portable music and/or video media player, which may include a media processing system to present the media, a storage device to store the media and may further include a radio frequency (RF) transceiver (e.g., an RF transceiver for a cellular telephone) coupled with an antenna system and the media processing system. In certain embodiments, media stored on a remote storage device may be transmitted to the media player through the RF transceiver. The media may be, for example, one or more of music or other audio, still pictures, or motion pictures.
The portable media player may include a media selection device, such as a click wheel input device on an iPod® or iPod Nano® media player from Apple, Inc. of Cupertino, Calif., a touch screen input device, pushbutton device, movable pointing input device or other input device. The media selection device may be used to select the media stored on the storage device and/or the remote storage device. The portable media player may, in at least certain embodiments, include a display device which is coupled to the media processing system to display titles or other indicators of media being selected through the input device and being presented, either through a speaker or earphone(s), or on the display device, or on both display device and a speaker or earphone(s).
Embodiments of the inventions described herein may be part of other types of data processing systems, such as, for example, entertainment systems or personal digital assistants (PDAs), or general purpose computer systems, or special purpose computer systems, or an embedded device within another device, or cellular telephones which do not include media players, or devices which combine aspects or functions of these devices (e.g., a media player, such as an iPod®, combined with a PDA, an entertainment system, and a cellular telephone in one portable device), or devices or consumer electronic products which include a multi-touch input device such as a multi-touch handheld device or a cell phone with a multi-touch input device.
In at least some embodiments, the one or more subsystems include a microcontroller. In at least some embodiments, the one or more subsystems include a microprocessor, such as an Intel Pentium® microprocessor, Motorola Power PC® microprocessor, Intel Core™ Duo processor, Intel Core i3, Intel Core i5, Intel Core i7, AMD Athlon™ processor, AMD Turion™ processor, AMD Sempron™ processor, and/or any other microprocessor. In one embodiment, the subsystem includes a CPU, a microcontroller, a digital signal processor, a microprocessor, a personal computer (“PC”), or any combination thereof. In one embodiment, the subsystem includes a general purpose computer system based on the PowerPC®, Intel Core™ Duo, Intel Core i3, Intel Core i5, Intel Core i7, AMD Athlon™, AMD Turion™ processor, AMD Sempron™, HP Pavilion™ PC, HP Compaq™ PC, and any other processor families.
Referring back to
It will be understood that the data processing system of
The data path 411 allows the processing system 401 to store a count value or timer value or other time-related value into the timer 405. The interrupt controller 407 may be a conventional interrupt controller that provides two different types of interrupt signals, such as a fast interrupt signal and a normal interrupt signal in the case of microprocessors from ARM Ltd. of Cambridge, England. The first interrupt signal 417 may be the fast interrupt signal which typically will provide a higher priority of service to the source of the interrupt than the other type of interrupt signal, as described in U.S. Pat. No. 7,917,784 which is hereby incorporated herein by reference. As shown in
In at least some embodiments, reducing timer interrupt latency involves (1) determining an original fire time for a next timer interrupt, (2) selecting an idle state for a subsystem; and (3) determining a new fire time based on the selected idle state. An idle state is one of reduced power states (e.g., a sleep state) of the system. The original fire time can be determined in response to the subsystem deciding to enter the idle state. Outstanding timer interrupt requests can be reprogrammed when entering a CPU idle state to compensate for the cost of exiting that state.
Generally, CPU idle states, for example, Ci-states, where i can be any integer number from 1 to N, are the states when the CPU has reduced or turned off selected functions to reduce power consumption. Different processors may support different numbers of idle states in which various parts of the CPU are turned off or operate at a reduced power. Various idle states for a processor can be characterized by different power consumption levels. For example, deeper Ci states shut off more parts of the CPU, leading to significantly reduced power consumption than shallower Ci states. Typically, C0 is an operational state at which a CPU actively executes instructions to perform certain operations. C1 may be a first idle state at which a clock running to a processor may be gated, i.e. the clock is prevented from reaching the core, effectively shutting the processor down in an operational sense. C2 may be a second idle state. At the second idle state in addition to gating the clock, an external I/O Controller Hub may block interrupts to the processor. Deeper C-states, such as C6 and C7 states have greater latencies and have higher energy entry/exit costs than shallower C-states, such as C1 or C2. The resulting performance (e.g., timing) and energy penalties become significant when the entry/exit frequency of a deeper C-state is high. Typically, there's a trade-off between power consumption and time to resume from a sleep state—the less power the system consumes, the longer it takes to the system to start running and also the slower the system may run when the system finally begins code execution.
In at least some embodiments, selecting an idle state for a subsystem involves determining exit latency data for each of the idle states of the subsystem, as described in further detail below.
In at least some embodiments, at the time when a data processing system decides to enter an idle state on a given processor, it takes a note of a next interrupt scheduled for that processor. The information about a next existing interrupt (“next original fire time”) can be used to determine a choice of which idle state to enter for a given processor. In preparation for entering the idle state, the data processing system re-schedules the next timer interrupt to a new fire time based on an expected latency needed to exit the idle state, as described in further detail below.
Typically, for a processor to exit an idle state and begin executing instructions a certain amount of work in the hardware needs to be done. Therefore, a certain amount of latency is paid to return to a state where the processor can execute instructions.
The variable and unpredictable latency to exit the lower power states may cause various problems for operation of the data processing system, for example for video and/or audio processing. For example, in audio processing, when multiple timers in a loop get shifted by latency add up a user may experience a noticeable delay between pressing a keyboard and hearing a sound.
In at least some embodiments, an exit latency is compensated by requesting a wake up earlier than it was originally scheduled in an amount that corresponds to the exit latency as best as it can be predicted.
In at least some embodiments, the next timer interrupt can be re-scheduled by subtracting from the original fire time the expected time needed to exit the idle state. So, if a processor needs to be up and executing instructions at time t0 and it is predicted that it may take X amount of time to exit the low power state, then as the system enters the low power state the processor is requested to wake up at time t0−X.
For example, if the original request fire time is t0, and the idle state is C1, then the timer is rescheduled for t0−XC1; if the idle state is Ci, the timer is rescheduled for t0−XCi; if the idle state is Ci+1, the timer is rescheduled for t0−XCi+1; and if the idle state is CN, the timer is rescheduled for t0−XCN. The original fire time t0 is adjusted by a variable value determined based on characteristics of the idle state of the subsystem. That is, the value to which to adjust the fire time is not fixed.
In at least some embodiments, selecting of the idle state is performed based at least on the original fire time. For example, a difference between the original fire time, such as t0, and a current time, such as t1 can be calculated, and an idle state, such as one of the C1-CN states can be selected based on the difference between the original fire time and the current time, such as t0−t1. In at least some embodiments, a subsystem enters the selected idle state to exit the selected idle state at the adjusted fire time to operate on an event.
For example, the exit latency can be determined experimentally by scheduling timers and measuring how long after the target deadline the interrupt handler is able to run. In at least some embodiments, the exit latency is measured for each of a plurality of CPUs and each of a plurality of idle states of the CPU. In at least some embodiments, measuring of the latency in exiting the idle state is done dynamically at runtime.
Method 600 continues with operation 606 involving dynamically calculating an average latency by adding the measured latency to a running average of latencies for the idle state. In at least some embodiments, a worst case latency in exiting the idle state is determined from the latencies measured over time, for example, before the current time. At operation 608 the worst case latency is recomputed based on the latency measured at a current time. At operation 610 a previous latency is recomputed for a next timer interrupt based on the running average and the recomputed worst case latency. In at least some embodiments, the latency is measured at a current time, and the previous latency is computed at a previous time before the current time.
At operation 612 the recomputed latency is used to adjust an existing (original) fire time for a next timer based wake up. That is, measuring the latency in exiting an idle state is performed dynamically at runtime, and adjusting an original fire time to a new fire time for a next timer interrupt is performed based on the runtime measurements. Method 600 continues at operation 614 involving waiting for a next exit of the subsystem from an idle state.
At operation 703 a timer is provided with a new fire time value determined based on a type of the selected idle state. In at least some embodiments, a time decrementer is programmed for t0−XCi, where t0 indicates a number time units in future corresponding to an original fire time, and XCi indicates a number of time units corresponding to an exit latency for the idle state. In at least some embodiments, the time decrementer includes one or more counters which are capable of asserting a timeout or other similar signal to an interrupt controller to generate an interrupt signal to the system. At operation 704 the selected idle state is entered. Operation 705 involves exiting the selected idle state at the new fire time to operate on an event. After operating the event, the method can return back to operation 701. In at least some embodiments, a record of the original requested fire time is kept, so that if the idle period ends before the timer fires (e.g. due to hardware interrupt or inter-processor interrupt), the interrupt can again be rescheduled for its original deadline (no idle exit time need now be compensated for).
Method 800 continues with operation 804 that determines whether or not a current time is later than a difference between the original fire time and the smallest exit latency (t0−XCmin). Typically, a shallowest idle state in which power consumption is greatest among all other idle states, such as a C1-state, has the smallest exit latency. If the current time is later than the difference t0−XCmin, the original fire time t0 is maintained, and the subsystem is prevented from entering an idle state at operation 806.
If the current time is not later than the difference t0−XCmin, a determination is made at operation 805 whether or not the current time is later than t0−XCi+1, where XCi+1 is an exit latency from C i+1 state, and where i is any integer from 1 to N−1, where CN indicates a deepest idle state in which the power consumption is smaller than in other idle states. If the current time is later than the difference t0−XCi+1, at operation 807 the original fire time is adjusted to a dynamically computed latency value XCi. In one embodiment, latency value XCi is computed dynamically at runtime, as described with respect to
If the current time is not later than the difference t0−XCi+1, at operation 808 a determination is made whether or not a current time is later than t0−XCmax. Typically, a deepest idle state in which power consumption is smallest among all other idle states, such as a CN-state, has the largest exit latency. If the current time is later than the difference t0−XCmax, at operation 810 the original fire time is adjusted to a dynamically computed value XCmax−1. At operation 811 a Cmax−1 idle state is chosen.
If the current time is not later than the difference t0−XCmax, at operation 812 the original fire time is adjusted to a statistically derived exit latency (for example, a worst case exit latency XCmax). In at least some embodiments, the statistically derived exit latency is a worst case latency statistically derived from measured exit latencies data throughout a life time of a processor. At operation 813 a Cmax idle state is chosen. In at least some embodiments, the Cmax idle state is a deepest reduced power state in which the subsystem consumes smaller power than in any other idle state. At operation 814 an idle state chosen at operations 809, 811, or 813, is entered.
If the exit latency is smaller than the difference (t1−t0), at operation 902 a determination is made whether or not the exit latency XCi is a maximum exit latency. Typically, the maximum exit latency corresponds to a deepest idle state in which the system consumes the smaller amount of power than in all other idle states. If the exit latency is a maximum exit latency, at operation 903 an original fire time is adjusted to a statistically derived latency, as described above.
At operation 904 a deepest idle state (e.g., Cmax state) is chosen. If the exit latency is not a maximum latency, at operation 905 it is determined whether there is a next exit latency to consider. If there is a next exit latency, method 900 returns to operation 901. If there is no next exit latency, at operation 906 the original fire time is adjusted to a dynamically computed latency value XCi. In at least one embodiment, latency value XCi is computed dynamically at runtime, as described with respect to
At operation 907 a Ci idle state is selected. If the exit latency is not smaller than the difference (t1−t0), at operation 908 a determination is made whether or not the exit latency is a minimum exit latency. Typically, the minimum exit latency corresponds to a shallowest idle state in which the system consumes greater amount of power than in all other idle states. If the exit latency is the minimum exit latency, at operation 909 the original fire time t0 is maintained, and the subsystem is prevented from entering an idle state. If the exit latency is not the minimum exit latency, at operation 910 it is determined whether there is a next exit latency to consider. If there is no exit latency to consider, method 900 goes to operation 906. If there is a next exit latency, method 900 returns to operation 901.
As discussed above, a range of CPU “idle” states may be defined on a computer system to limit energy consumption. These idle states come with a cost, however. For example, exiting an idle state in order to service interrupts or run threads can take an unpredictable length of time. The latency to resume execution can be many microseconds, and its magnitude and unpredictability can pose great challenges to operating systems developers. One important difficulty occurs if the system is concerned with the exact moment that an interrupt is triggered, with high precision. With long latencies to exit idle states, it may not be possible to take a timestamp until long after the triggering event.
Described below is a system and method which reduces latency for time-critical interrupts whose firing time can be estimated with reasonable accuracy, and does so without substantially impacting energy consumption. These embodiments allow allows aggressive use of processor idle states while ensuring that at the crucial moment that the interrupt is triggered, the relevant processor or core is “warmed” to the point where it can receive an interrupt with low latency. In the embodiments described below, processor “warming” means increasing the frequency and/or voltage to a sufficient level so that the processor is capable of handling the interrupt.
At 1001, a determination is made as to whether a time-critical interrupt is anticipated some time in the future. A software-generated interrupt may be identified as “time-critical,” for example, by an application developer. If the interrupt is time-critical then, at 1002, the time (t1) at which the event triggering the interrupt will occur is estimated. In one embodiment, this information is provided by the application program code requiring the interrupt. At 1003, a warming timer interrupt is scheduled to fire at a time (t1*) prior to the estimated time that the event triggering the interrupt will occur.
As indicated in
In one embodiment of the invention, task urgency information is “injected” into CPU power management decisions. In particular, in one implementation, the relative urgency characterizing one or more currently-executing threads may be exploited to determine an appropriate frequency and/or voltage for the CPU. In accordance with this embodiment, frequency/voltage decisions may still be made using an adaptive power management algorithm that is largely independent of scheduling, but the CPU may transition directly to high-speed states when critical (e.g., real time) tasks come online. In this way, both performance and real time correctness are preserved, and approximations used to identify “background” load can be made more precise. When critical tasks are distinguished from low-priority ones, it will be possible to make more aggressive use of low clock speeds without fear of harming those important tasks.
As set forth in
As illustrated in
According to one embodiment of the invention, the exemplary architecture of the data processing system 2400 may used for the mobile devices described above. The data processing system 2400 includes the processing system 2420, which may include one or more microprocessors and/or a system on an integrated circuit. The processing system 2420 is coupled with a memory 2410, a power supply 2425 (which includes one or more batteries) an audio input/output 2440, a display controller and display device 2460, optional input/output 2450, input device(s) 2470, and wireless transceiver(s) 2430. It will be appreciated that additional components, not shown in
The memory 2410 may store data and/or programs for execution by the data processing system 2400. The audio input/output 2440 may include a microphone and/or a speaker to, for example, play music and/or provide telephony functionality through the speaker and microphone. The display controller and display device 2460 may include a graphical user interface (GUI). The wireless (e.g., RF) transceivers 2430 (e.g., a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a wireless cellular telephony transceiver, etc.) may be used to communicate with other data processing systems. The one or more input devices 2470 allow a user to provide input to the system. These input devices may be a keypad, keyboard, touch panel, multi touch panel, etc. The optional other input/output 2450 may be a connector for a dock.
Embodiments of the invention may include various steps as set forth above. The steps may be embodied in machine-executable instructions which cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components.
Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable program code. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, or other type of media/machine-readable medium suitable for storing electronic program code.
Throughout the foregoing description, for the purposes of explanation, numerous specific details were set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without some of these specific details. For example, it will be readily apparent to those of skill in the art that the functional modules and methods described herein may be implemented as software, hardware or any combination thereof. Moreover, although embodiments of the invention are described herein within the context of a mobile computing environment (i.e., using mobile devices 120-123; 601-603), the underlying principles of the invention are not limited to a mobile computing implementation. Virtually any type of client or peer data processing devices may be used in some embodiments including, for example, desktop or workstation computers. Accordingly, the scope and spirit of the invention should be judged in terms of the claims which follow.
Sokol, Jr., Joseph, Heller, Daniel S., Sotomayor, Guy G.
Patent | Priority | Assignee | Title |
10466765, | Aug 22 2017 | Microchip Technology Incorporated | Systems and methods for managing power consumed by a microcontroller in an inactive mode |
11269391, | Jan 29 2020 | Dell Products L.P. | System and method for setting a power state of an information handling system |
9529403, | Aug 22 2014 | Apple Inc. | Method and apparatus for providing telemetry for power management functions |
Patent | Priority | Assignee | Title |
6366810, | Sep 14 1998 | ELA MEDICAL, S A | Deterministic and jitter-free dual-chamber cardiac pacemaker |
7793122, | Apr 27 2007 | CA, INC | Power management method and system organizing an execution order of each command in a plurality of commands based on a predicted probability of success of each command |
20060156045, | |||
20070124611, | |||
20080077819, | |||
20090217277, | |||
20100122008, | |||
20100185882, | |||
20110087908, | |||
20120054511, | |||
20130132754, | |||
WO2009127646, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 28 2011 | Apple Inc. | (assignment on the face of the patent) | / | |||
Oct 28 2011 | HELLER, DANIEL S | Apple Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027547 | /0110 | |
Oct 28 2011 | SOTOMAYOR, GUY G | Apple Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027547 | /0110 | |
Oct 28 2011 | SOKOL, JOSEPH, JR | Apple Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027547 | /0110 |
Date | Maintenance Fee Events |
Jun 02 2014 | ASPN: Payor Number Assigned. |
Jan 04 2018 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 29 2021 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Jul 15 2017 | 4 years fee payment window open |
Jan 15 2018 | 6 months grace period start (w surcharge) |
Jul 15 2018 | patent expiry (for year 4) |
Jul 15 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 15 2021 | 8 years fee payment window open |
Jan 15 2022 | 6 months grace period start (w surcharge) |
Jul 15 2022 | patent expiry (for year 8) |
Jul 15 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 15 2025 | 12 years fee payment window open |
Jan 15 2026 | 6 months grace period start (w surcharge) |
Jul 15 2026 | patent expiry (for year 12) |
Jul 15 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |