Patent Publication Number: US-7219245-B1

Title: Adaptive CPU clock management

Description:
BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The present invention relates in general to the field of data processing. In one aspect, the present invention relates to a method and system for reducing power consumption in a digital processor. 
   2. Description of the Related Art 
   In general, data processors are capable of executing a variety of instructions. Processors are used in a variety of applications, including communication systems formed with wireless and/or wire-lined communication devices. Such communication systems range from national and/or international cellular telephone systems to the Internet to point-to-point in-home wireless networks. Each type of communication system is constructed, and hence operates, in accordance with one or more communication standards. For instance, wireless communication systems may operate in accordance with one or more standards including, but not limited to, IEEE 802.11, Bluetooth, advanced mobile phone services (AMPS), digital amps, global system for mobile communications (GSM), code division multiple access (CDMA), local multi-point distribution systems (LMDS), multi-channel-multi-point distribution systems (MMDS) and/or variations thereof. Especially with wireless and/or mobile communication devices (such as a cellular telephone, two-way radio, personal digital assistant (PDA), personal computer (PC), laptop computer, home entertainment equipment, etc.), the processor or processors in a device must be able to run various complex communication programs using only a limited amount of power that is provided by power supplies, such as batteries, contained within such devices. Because of the computational intensity (and the associated power consumption by the processor(s)) for communication functions, it is an important goal in the design of wireless and/or mobile communication devices to minimize processor and other module operations (and the associated power consumption). It is particularly crucial for mobile applications in order to extend battery life. 
   With conventional solutions for saving power, a variety of complex circuit and software designs have been proposed. These mechanisms typically implement CPU clock management by switching between an active mode and an idle mode. In the idle mode, the processor has no work to do and the CPU stops its clocking and waits for an interrupt. The CPU reverts back to active mode whenever it has work to do, and in this active mode, the CPU resumes its maximum pre-configured clock speed. This approach exhibits substantial latencies for entering and leaving the idle mode, which restricts the power that can be saved and the range of applicability because these latencies may preclude a processor from being able to deactivate modules before having to reactivate them. Moreover, these mechanisms are inefficient, in that they over-react to processing activity by placing the CPU clock in either a fully “on” or fully “off” state, or otherwise provide only limited or predetermined clock frequency modes of operation. Other mechanisms, such as implemented with iPAQ, Intel SpeedStep and AMD PowerNow! devices, use software to control the CPU frequency or voltage, though a major problem with this approach is that the load estimating software itself creates an extra load on the CPU, reducing the power saving benefits of such an approach. Software-based frequency control also suffers from response time latencies that can impede real-time performance requirements, especially when implemented with complex signaling mechanisms and processor state transitions which require significant hardware and software support. 
   In addition to the complexity of the computational requirements for a communications processor, such as described above, the ever-increasing need for higher speed communications systems imposes additional performance requirements and resulting costs for communications systems. In order to reduce costs, communications systems are increasingly implemented using Very Large Scale Integration (VLSI) techniques. The level of integration of communications systems is constantly increasing to take advantage of advances in integrated circuit manufacturing technology and the resulting cost reductions. This means that communications systems of higher and higher complexity are being implemented in a smaller and smaller number of integrated circuits. For reasons of cost and density of integration, the preferred technology is CMOS. To this end, digital signal processing (“DSP”) techniques generally allow higher levels of complexity and easier scaling to finer geometry technologies than analog techniques, as well as superior testability and manufacturability. 
   Therefore, a need exists for a method and apparatus that provides reduced power consumption with a more efficient CPU clocking scheme. In addition, a need exists for reducing processor power consumption without requiring complex hardware and elaborate signaling mechanisms. Moreover, a need exists for improved selectivity when adjusting the clock frequency or voltage levels during runtime operations. There is also a need for a better system that is capable of performing the above functions and overcoming these difficulties without increasing circuit area, operational power and software overhead. Further limitations and disadvantages of conventional systems will become apparent to one of skill in the art after reviewing the remainder of the present application with reference to the drawings and detailed description which follow. 
   SUMMARY OF THE INVENTION 
   Broadly speaking, the present invention provides an efficient, intelligent, self-adaptive method and system for managing CPU power usage by adapting CPU(s) clock speeds on a continuous basis during runtime, depending upon estimated work requirements. By tuning the clock speed of the CPU(s) to the actual workload, the required clocking signals are implemented as a consumer-supplier model. When the workload for the CPU(s) increases, more clock speed is supplied. On the other hand, when the workload reduces (such as can occur when the clock speed capacity is under-utilized), the clock speed is reduced. 
   In accordance with various embodiments of the present invention, a method and apparatus provides a power saving mechanism for a programmable communications processor. The power saving mechanism may be implemented by continuously and automatically controlling the CPU clock speed to track the actual work requirements from the CPU at any given time. In a selected embodiment, the required CPU clock speed is estimated by monitoring the processor(s) idleness and adjusting the clock speed to maintain a target level of idleness, thereby providing improved effectiveness, reduced latency, simplified programming and reduced hardware overhead. 
   In accordance with selected illustrative embodiments, a digital processor is disclosed for use in a variety of applications, including a wireless communication device, desktop computer, mobile device, SOC, microcontroller, communications processor, and the like. The digital processor may include a processing unit and a processing unit clock that has an adjustable clock speed. In addition, one or more control registers may be provided for storing a targeted activity measure (e.g., an idleness measure) for the processing unit and/or for storing a tolerance measure. With this configuration, a measurement module monitors change in the processing unit activity and issues an interrupt if a change in the processing unit activity exceeds the tolerance measure. A variety of techniques can be used to measure changes in the processing unit activity, including calculating a scalar value for defining a change in the processing unit activity or calculating a time rate of change for defining a change in the processing unit activity. In response to an interrupt from the measurement module, clock control logic computes an adjusted clock speed for the processing unit clock. This computation may be made on a continuous basis during runtime or as a function of the tolerance measure. In this way, the adjusted clock speed is a function of at least the targeted activity measure for the processing unit. After a clock speed adjustment, the activity measure for the processing unit falls within the tolerance measure of the targeted activity measure. With the present invention, the adjusted clock speed may be increased to approach a maximum clock speed when an activity measure for the processing unit meets or approaches a first activity measure boundary value. For example, the clock speed can increase in response to a decrease in the idleness measure, or in response to a decrease in the idleness measure beyond the tolerance measure. Likewise, the clock speed can decrease in response to an increase in an activity measure for the processing unit. 
   The objects, advantages and other novel features of the present invention will be apparent to those skilled in the art from the following detailed description when read in conjunction with the appended claims and accompanying drawings. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a schematic block diagram of a wireless communication device in accordance with an exemplary embodiment of the present invention. 
       FIG. 2  shows a high level block diagram of a method and system in accordance with selected embodiments of the CPU clock management system of the present invention. 
       FIG. 3  depicts a plot of an exemplary adaptive CPU clock management system of the present invention. 
   

   DETAILED DESCRIPTION 
   A method and apparatus is described for an improved digital processor, such as a can be used in communications, desktop, mobile, SOC and microcontroller applications and the like. While various details are set forth in the following description, it will be appreciated that the present invention may be practiced without these specific details. For example, selected aspects are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention. Some portions of the detailed descriptions provided herein are presented in terms of algorithms and instructions that operate on data that is stored in a computer memory. Such descriptions and representations are used by those skilled in the art to describe and convey the substance of their work to others skilled in the art. In general, an algorithm refers to a self-consistent sequence of steps leading to a desired result, where a “step” refers to a manipulation of physical quantities which may, though need not necessarily, take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It is common usage to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. These and similar terms may 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 discussion, it is appreciated that, throughout the description, discussions using terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
   In accordance with a selected embodiment, the methods and systems for providing efficient power management as shown and described herein may be implemented in software and/or hardware control logic stored on a computer-readable medium and executed as a computer program on a general purpose or special purpose computer. The invention, for example, can be implemented in one a single or multiprocessor wireless cellular communication devices, such as GSM (Global System for Mobile Communications), GPRS (General Packet Radio Services), EGPRS (Enhanced GPRS), 3G or EDGE (Enhanced Data GSM Environment) cell phone devices. For clarity, only those aspects of the functionality germane to the invention are described, and product details well known in the art are omitted. For the same reason, the computer hardware is not described in further detail. It should thus be understood that the invention is not limited to any specific computer language, program, or computer, and that, in the development of any such actual embodiment, numerous implementation-specific decisions must be made to achieve the developer&#39;s specific goals, such as compliance with system-related and business-related constraints, which will vary from one implementation to another. Moreover, it will be appreciated that such a development effort might be complex and time-consuming, but would nevertheless be a routine undertaking for those of ordinary skill in the art having the benefit of this disclosure. 
   Referring to  FIG. 1 , a block diagram of a communications system  100  is provided, illustrating one or more embodiments of the adaptive CPU clock management system in accordance with the present invention. In addition to being implemented on conventional computers and/or communications systems, the present invention may also be implemented on mobile devices, such as personal digital assistants, mobile or cellular phones, smart phones and other mobile devices that include programmable capabilities such as telecommunications, global position system (GPS) detection, camera or video imaging, multimedia messaging (MMS), Internet features and the like. In addition, the present invention may be implemented in a mobile computing device using a software modem to communicate in accordance with a wireless communication protocol, such as GSM, V.90, ADSL, HomePNA, Wireless LAN, etc. With the additional mobility, increased computing power and new telephony and computer-based functions being provided in mobile computer-based devices, improved power management may be provided by controlling the CPU clock frequency, which is a significant factor in determining the power consumption by the CPU(s) and other system devices identified to be clock manageable. By controlling the clock frequency to track actual workload requirements, CPU power usage is reduced. 
   In the communications system  100  depicted in  FIG. 1 , a mobile computing device  102  includes one or more central processing units (CPU)  114 , a system bus  130 , system memory  140 , a memory controller  116  (which is used to manage memory operations with respect to a system memory  140 ), a power management module  131  and a programmable real time clock  120 . In selected embodiments, the system memory may or may not be connected through a controller  116 , and may be implemented as on-board or off-chip primary (L 1 ), secondary (L 2 ) and/or tertiary (L 3 ) cache memory  118  (illustrated in  FIG. 1  for architectural purposes as being directly connected to the bus  130 ), DDR SDRAM module(s), Flash, RAM, ROM, PROM, EPROM, EEPROM, disk drive memory devices, and the like. For clarity and ease of understanding, not all of the elements making up the mobile computing device  102  are described in detail. Such details are well known to those of ordinary skill in the art, and may vary based on the particular computer vendor and microprocessor type. Moreover, the mobile computing device  102  may include other buses, devices, and/or subsystems, depending on the implementation desired. For example, the mobile computing device  102  may include caches, modems, parallel or serial interfaces, SCSI interfaces, network interface cards, and the like. In addition, other peripheral devices may be connected to the mobile computing device  102 , either directly to the bus  130  or indirectly through a peripheral controller (not shown) for controlling communications with the device  102 , including a peripheral GPS receiver device, a cell phone or similar telecommunications device and/or various input/output devices (such as a keypad, keyboard, microphone, speaker, analog signal generator, mouse, I/O pad, light or LED device, display, etc.). 
   In a selected embodiment, the mobile computing device  102  includes a wireless transceiver device  112  which is provided to receive and transmit signals via antenna  110  to and from an access point  154  (or base station) to the Internet or other computer network  156 . In operation, the wireless transceiver device  112  receives outbound data from the CPU device  114  and processes the outbound data to produce digital transmission data formatted in accordance with a particular wireless communication standard (such as IEEE 802.11 (including all current and future subsections), Bluetooth, etc.), which is then converted to an RF signal, amplified and transmitted via antenna  110 . Substantially the reverse operation is performed for data reception. As will be appreciated, the wireless transceiver device  112  may be implemented as a software modem in the mobile computing device  102 , or may be implemented as a GSM (Global System for Mobile Communications), GPRS (General Packet Radio Services), EGPRS (Enhanced GPRS), 3G or EDGE (Enhanced Data GSM Environment) cell phone device, or the like. In addition or in the alternative, the wireless transceiver device  112  may include a one or more digital processing modules and associated memory for performing communication processing in accordance with a particular wireless communication standard. The digital receiver functions include, but are not limited to, digital intermediate frequency to baseband conversion, demodulation, decoding and/or descrambling. The digital transmitter functions include, but are not limited to, scrambling, encoding, modulation and/or digital baseband to IF conversion. The digital receiver and transmitter processing modules may be implemented using a shared processing device, individual processing devices, or a plurality of processing devices. Such a processing device may be a microprocessor, micro-controller, digital signal processor, microcomputer, central processing unit, field programmable gate array, programmable logic device, state machine, logic circuitry, analog circuitry, digital circuitry and/or any device that manipulates signals (analog and/or digital) based on operational instructions. The memory may be a single memory device or a plurality of memory devices. Such a memory device may be a read-only memory, random access memory, volatile memory, non-volatile memory, static memory, dynamic memory, flash memory, and/or any device that stores digital information. Note that when the processing module implements one or more of its functions via a state machine, analog circuitry, digital circuitry and/or logic circuitry, the memory storing the corresponding operational instructions may be embedded with the circuitry comprising the state machine, analog circuitry, digital circuitry and/or logic circuitry. 
   In the illustrated embodiment, the system memory  140  stores data and software programs that are executed and/or processed in connection with the operation of the mobile computing device  102 . For example, the system memory stores operating system software, BIOS code, drivers and other applications relating to the operation of the device  102 . But rather than using software stored in memory  140  to control CPU frequency or voltage, a selected embodiment of the present invention works at the hardware level by storing control parameters in CPU control registers  131  during system startup. 
   In the example depicted in  FIG. 1 , the control parameters are stored in the power management module  131  (as the CPU idleness module  132 , the control module  133  and/or the tolerance module  134 ) during startup to configure the CPU to run in an adaptive CPU clock management mode. As will be appreciated, the power management module  131  may be included within or separate from the CPU  114 . In accordance with a selected embodiment, one configurable parameter (DESIRED_IDLENESS) is used to specify a target measure of the percentage of idleness that should be maintained by the device  102 . While this parameter might ideally be set to a value of “0%,” the targeted idleness measure may also be a non-zero value. For example, a non-zero value of 10% is used by the clock management system to adjust CPU clock speeds so that the CPU  114  is 10% idle during steady state workloads. While a higher value for the idleness parameter will reduce the power consumption for the device, it can also adversely affect the device speed. As will be appreciated, the CPU  114  is 100% idle in idle state and 0% idle during over capacity workloads. 
   Another configurable parameter (ACCM_TOLERANCE) that may be used with selected embodiments of the present invention specifies a tolerance quantification within which idleness measure changes are tolerated. A minimum tolerance measure is required so that very small changes in idleness will not cause frequent clock changes for small idleness measure changes. On the other hand, too large of a tolerance measure will reduce the power saving advantages of the present invention, in that the clock speeds will not be adjusted to match the workload requirements. 
   An additional configurable parameter (ACCM_PERIOD) that may be used with selected embodiments of the present invention specifies a periodic time duration for monitoring CPU idleness changes. When stored in the control register  133 , this parameter controls the frequency with which the control module determines if a clock speed adjustment is required by reading the measured CPU idleness. As will be appreciated, such periodic determinations are not required with an interrupt-based design which issues an interrupt to calculate the clock speed adjustment only when the CPU idleness changes by more than a predetermined or threshold tolerance margin. 
   Referring now to  FIG. 2 , a method and system in accordance with selected embodiments of the CPU clock management system of the present invention are depicted in block diagram form. As illustrated at block  202 , the CPU manages its clock frequency during runtime by configuring selected parameters into CPU control registers during startup. While various internal or external parameters may be determined by design choices that are made to define the characteristics of clock management scheme, in a selected embodiment depicted in  FIG. 2 , at least two parameters are used, including a desired or target measure of CPU idleness to be maintained (REGISTER_CPU_CONTROL_DESIRED_IDLENESS) and a tolerance to CPU idleness fluctuations (REGISTER_CPU_CONTROL_ACCM_TOLERANCE). Other or alternate parameters may be specified, such as, for example, a sampling period (REGISTER_CPU_CONTROL_ACCM_PERIOD) for determining how frequently clock speed adjustments are checked. 
   In accordance with the present invention, the CPU idleness measurement function (block  204 ) may be implemented as a scalar value calculation by measuring a single current value for the defined time period of interest. Alternatively, the CPU idleness measure may be implemented by determining the time rate of change of clock speeds for a plurality of measurement events. The rate of change measurement approach provides a better estimation of new clock speeds by maintaining the last N good measures of clock speed instead of just a single current measure. As will be appreciated, a measure of CPU idleness may be implemented in a variety of ways, including but not limited to using an idle tick counter, instruction code pre-fetch latency monitoring, instruction cache activity measure and the like. For example, clock speed changes can be prompted when the idleness measure departs from the desired idleness by more than the permitted tolerance. Alternatively, any idleness change beyond a threshold quantity (or a scaled threshold quantity) may be used to trigger a clock speed change. 
   The clock management control block  206  determines if a clock speed adjustment is required by processing selected control parameters. In a selected embodiment, the clock management control block  206  may be designed to periodically read the last N good idleness measures from the CPU idleness block  204  to determine if the idleness measures require a change in clock speed. Alternatively, the clock management control block  206  may be designed to be interrupted by the CPU idleness measure block  204  whenever significant changes (i.e., greater than the specified tolerance value) in idleness are detected. The clock management control block  206  processes the control parameter inputs to determine the need for any clock speed changes, and initiates the clock speed change, if required. 
   As will be appreciated, for any specific implementation of the clock management system of the present invention, the actual control parameters, their values, the CPU idleness value, and the clock management control block  206  design will dependent upon several factors, such as time delays, integrated circuit technology, design constraints, required response times etc. Of course, when designing a particular implementation of the CPU clock management system invention disclosed herein, CPU clock change delays should also be taken into account. 
   With reference to the system and methodology depicted in  FIG. 2 , a selected embodiment may be illustrated with reference to an example involving a mobile phone with a 125 MHz processor. A typical mobile phone supporting idle and active states with the clock management control system of the present invention would stop CPU clocking when the device is idle. However, when the phone user is browsing through his mobile directory, the change in processing activity (reduced idleness) would be measured by the CPU idleness block  204 . If the specified tolerance limits were exceeded, an interrupt  205  is passed to the control module  206 , along with the last N good measures  207 . The control module then processes these parameters to determine that (in this example) the CPU clock needs to run at a higher speed (e.g., 50 MHz). If the user then uses the phone to place a call, this increase in CPU activity would again be detected at measurement block  204 . If the reduction in idleness exceeded the tolerance measure (as determined at control block  206 ), a new clock speed (e.g., 100 MHz) is provided (at block  208 ). With this example, the CPU may never (or rarely run) at its maximum value, depending on the actual work requirements. 
   Alternative and/or additional embodiments of the present invention may also be described with reference to an example involving a PC laptop computer with a 1 GHz processor and the plot shown in  FIG. 3  of an exemplary adaptive CPU clock management system of the present invention. In this example, the desired idleness parameter is configured for 10% (e.g., 100 MHz) and the tolerance parameter is set to 5%. In the diagram, the clock stops clocking (100% idle) when in idle state, tries to maintain an average 10% idle measure for normal workloads (with clock speeds changing to 200 MHz, 500 MHz, 400 MHz and 90 MHz), and reduces to 3% and 0% idleness when working on very heavy payloads (clock at 900 MHz and max 1 GHz). 
   In particular, a user powers up his laptop in a remote area. Due to the maximum work requirements during boot process by the BIOS, peripheral, and operating system, the CPU ramps up to its max speed of 1 GHz (waveform segment  300 ) until the desktop appears, at which time it switches to idle state (waveform segment  302 ) waiting for the user to issue commands. User activity (such as when the user inserts and plays a music CD) while the CPU is idling causes the idleness measure to drop (waveform segment  304 ). A significant change (i.e., drop) in the idleness measure at the established clock rate prompts the clock management control module to supply higher clock speeds (waveform segment  306 ) which quickly settle down to 200 MHz—the actual estimated speed consumption. In this example, the 200 MHz clock signal is sufficient to run the music CD. As the clock speed reaches 200 MHz, the idleness measure increases to approximately the desired CPU idleness measure (in this example, 10%). 
   If additional CPU activity is required, either by user input or automatically (such as when the screen saver starts to run in the background at the same time the music is playing), the drop in idleness exceeding the tolerance measure (waveform segment  308 ) prompts the clock management control module to supply higher clock speeds (waveform segment  310 ) which quickly settle down to 500 MHz—the actual estimated speed consumption. In this example, the 500 MHz clock signal is sufficient to run the music CD and the screen saver at the same time. As the clock speed reaches 500 MHz, the idleness measure increases to approximately the desired CPU idleness measure (waveform segment  312 ). 
   When the CPU workload is reduced (such as when a user touches the mouse, which stops the screen saver and brings back the still background), the idleness (measured at block  204 ) increases (waveform segment  314 ), prompting the clock management control module to lower the system clock to 400 MHz (waveform segment  316 ) now that the CPU does not have to run the screen saver. In this example, the 400 MHz clock signal is sufficient to run the music CD and whatever program was activated by the user with the mouse. As the clock rate drops, the idleness measure again returns to approximately the desired idleness measure (waveform segment  318 ). 
   When the CPU workload approaches its maximum, the idleness measure is no longer able to maintain at the desired idleness measure without reducing the clock speed, so the idleness measure approaches 0% as the required CPU clock speed reaches its maximum rate. This is illustrated again with  FIG. 3 , which shows that an increase in the CPU workload (which can occur, for example, when the user starts to play a game with the music still playing) reduces the idleness measure (waveform segment  320 ). As the required workload approaches the CPU&#39;s maximum rate, the clock rate is increased (waveform segment  322 ) to or near its maximum (waveform segment  324 ,  326 ), but the idleness is unable to rebound to the desired idleness measure without slowing down the CPU, at least until the game is paused. Thus, the adaptive CPU clock management must accommodate the 0% idleness measure as a boundary and determine idleness measures that exist outside of the CPU idle tolerance as a function of the required clock rate in relation to the maximum clock rate. While the specific algorithm for defining an adjusted target idleness measure (e.g., waveform segment  328 ) may be configured to meet the specific implementation requirements of a particular application, in a selected embodiment, the adjusted target idleness measure may be calculated by applying a first factor (e.g., the proportion of the actual clock speed to the maximum clock speed) to the difference between the desired idleness measure (e.g., 10%) and a boundary (e.g., 0% idleness), and applying some additional scaling factor or parameter to the product to derive the adjusted target idleness. In the example of  FIG. 3 , a drop in the idleness (waveform segment  320 ) causes the clock rate to increase (waveform segment  322 ) to 900 MHz (waveform segment  324 ), and then an adjusted target idleness of 3% (waveform segment  328 ) is used until such time as the CPU reaches its maximum payload, causing the measured idleness to drop to 0% (waveform segment  329 ). 
   A measured idleness of 0% causes the clock management controller to increase the CPU clock to its maximum rate (waveform segment  325 ) until the CPU activity is completed. Continuing with the example depicted in  FIG. 3 , this is illustrated when a reduction in the CPU workload (such as might occur when the music and game programs are paused) is detected by the idleness measurement module as an increase in the idleness measure (waveform segment  330 ) at the established clock rate (1 GHz). This increase is used to drop the clock rate (e.g., to 90 MHz), which is the clock rate that is required for the idleness measure to be maintained at or about the desired idleness measure (waveform segment  334 ), as determined by the clock management control module. 
   Thus, as described herein, a system and method are provided for managing CPU clock speed consumption on the basis of the CPU&#39;s actual processing requirements. Those skilled in the art will appreciate that the present invention may be implemented using a variety of control parameters to address technology variations, architecture differences, response time requirements, time delays, design constraints, other circuit-specific implementation requirements, but still obtain the power saving benefits of managing the clock consumption to match actual CPU requirements. 
   As will be appreciated, selected embodiments of the present invention may be implemented using one or more integrated circuits. For example, the CPU  114  may be implemented on one integrated circuit and the transceiver  112  may be implemented on a second integrated circuit. Alternatively, the entire circuit functionality of the mobile computing device  102  may be implemented on a single integrated circuit. However implemented, the clock management technique for the controlling power consumption may be used for any processing unit or CPU, whether located on-chip (e.g., CPU  114 ) or in separate circuitry (e.g., processing module in the wireless transceiver device  112 ). 
   As described herein and claimed below, a method and apparatus are provided for controlling the CPU clock rates in order to reduce CPU power consumption. By using an idleness measure to track the clock rate to the work load requirements, the processor and associated modules may be quickly powered down and efficiently reactivated by speeding up the processor clock rates to the extent needed. This translates to a very power efficient processor. As will be appreciated, the present invention may be implemented in a computer accessible medium including one or more data structures representative of the circuitry included in the system described herein. Generally speaking, a computer accessible medium may include storage media such as magnetic or optical media, e.g., disk, CD-ROM, or DVD-ROM, volatile or non-volatile memory media such as RAM (e.g., SDRAM, RDRAM, SRAM, etc.), ROM, etc., as well as media accessible via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link. For example, data structure(s) of the circuitry on the computer accessible medium may be read by a program and used, directly or indirectly, to implement the hardware comprising the circuitry described herein. For example, the data structure(s) may include one or more behavioral-level descriptions or register-transfer level (RTL) descriptions of the hardware functionality in a high level design language (HDL) such as Verilog or VHDL. The description(s) may be read by a synthesis tool which may synthesize the description to produce one or more netlist(s) comprising lists of gates from a synthesis library. The netlist(s) comprise a set of gates which also represent the functionality of the hardware comprising the circuitry. The netlist(s) may then be placed and routed to produce one or more data set(s) describing geometric shapes to be applied to masks. The masks may then be used in various semiconductor fabrication steps to produce a semiconductor circuit or circuits corresponding to the circuitry. Alternatively, the data structure(s) on computer accessible medium may be the netlist(s) (with or without the synthesis library) or the data set(s), as desired. In yet another alternative, the data structures may comprise the output of a schematic program, or netlist(s) or data set(s) derived therefrom. While a computer accessible medium may include a representation of the present invention, other embodiments may include a representation of any portion of the power management system described herein. 
   The present invention has been particularly described with reference to  FIGS. 1–3  and with emphasis on selected implementation examples, but it should be understood that the figures are for illustration purposes only and should not be taken as limitations upon the present invention. In addition, it is clear that the method and apparatus of the present invention has utility in any application where a reminder may be modified or suppressed upon the occurrence of predetermined conditions. Accordingly, the foregoing description is not intended to limit the invention to the particular form set forth, but on the contrary, is intended to cover such alternatives, modifications and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims so that those skilled in the art should understand that they can make various changes, substitutions and alterations without departing from the spirit and scope of the invention in its broadest form.