Portable computing devices (PCDs) are ubiquitous. These devices may include cellular telephones, portable digital assistants (PDAs), portable game consoles, palmtop computers, and other portable electronic devices. In addition to the primary function of these devices, many include peripheral functions. For example, a cellular telephone may include the primary function of enabling and supporting cellular telephone calls and the peripheral functions of a still camera, a video camera, global positioning system (GPS) navigation, web browsing, sending and receiving emails, sending and receiving text messages, push-to-talk capabilities, etc. As the functionality of such a device increases, the computing or processing power required to support such functionality also increases. It is well established that power storage capacity is a limiting factor. Accordingly, attempts to minimize power consumption in PCDs are welcome.
Dynamic Voltage and Frequency Scaling (DVFS) can be used to optimize power consumption. DVFS control methods adjust a clock frequency to sustain a desired throughput. The power savings are proportional to the change in frequency. Alternatively, or in addition to the above-described adjustment in clock frequency, the supply voltage is reduced to a level that will just avoid timing errors at the operating frequency. The power savings are proportional to the square of the voltage reduction.
Identifying conditions that support a change in one or both of the operating voltage and clock frequency while sustaining a desired system performance is not trivial. For PCDs that support cellular telephone calls, as well as the described peripheral functions, conventional power control solutions use a global approach to ensure a desired operator experience.
Thus, there is a need for improved mechanisms for optimizing power consumption in a PCD.
Systems and methods are disclosed that enable real-time monitoring of a bus interface and application of the result of the monitoring in a cost-effective control methodology to control power consumption in a portable computing device (“PCD”). A state or condition of a set of signals at the bus interface between a processing resource and the bus is observed for an indication that the bus is incapable of achieving a present demand. A signal generated in response to the indication and a bus clock are used to generate an input to a signal processor. The signal processor generates a control signal that varies when a modified representation of the input exceeds a threshold. The control signal is applied at an input of a controller that generates an adjustment signal. The adjustment signal directs a change in a bus operating point.
One example embodiment is a PCD including a processing resource communicatively coupled to a bus by a bus interface. The PCD further includes a detector, a sampler, a signal processor and a controller. The detector identifies when the bus is incapable of achieving a present demand by generating a rejection signal. The sampler receives the rejection signal and generates a modified signal in accordance with a bus clock. The signal processor receives the modified signal and generates a control signal when the modified and processed signal exceeds a threshold. In turn, the controller generates an appropriate adjustment signal when the modified and processed signal exceeds the threshold. The adjustment signal directs the bus to change a present bus operating point.
Another example embodiment is a method for controlling a bus. The method includes the steps of receiving an event from a bus interface, the event indicating that the bus in incapable of achieving a present demand, forwarding a signal generated in response to the event and a bus clock, receiving the signal at a signal processor arranged to generate a control signal when the signal exceeds a threshold, receiving the control signal at a controller arranged to generate an adjustment signal, and applying the adjustment signal to direct a change in a bus operating point.
Another example embodiment is a non-transitory processor-readable medium having stored therein processor instructions and data that direct the processor to: receive an indication of an event from a bus interface, the event indicating that the bus is incapable of achieving a present demand; sub-sample the indication of the event from the bus interface in accordance with a bus clock to generate a sub-sampled signal; process the sub-sampled signal by detecting an edge of the sub-sampled signal to generate a representation of the sub-sampled signal; apply a low-pass filter to the representation of the sub-sampled signal to generate a filtered representation of the sub-sampled signal; compare the filtered representation of the sub-sampled signal with a first threshold and a second threshold; generate a first control signal when the filtered representation of the sub-sampled signal exceeds a first threshold; generate a second control signal when the filtered representation of the sub-sampled signal is below a second threshold; generate an adjustment signal in response to the first or the second control signal; and communicate the adjustment signal to the bus.
In the drawings, like reference numerals refer to like parts throughout the various views unless otherwise indicated. For reference numerals with letter character designations such as “102A” or “102B”, the letter character designations may differentiate two like parts or elements present in the same figure. Letter character designations for reference numerals may be omitted when it is intended that a reference numeral to encompass all parts having the same reference numeral in all figures.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
In this description, the term “application” may also include files having executable content, such as: object code, scripts, byte code, markup language files, and patches. In addition, an “application” referred to herein, may also include files that are not executable in nature, such as documents that may need to be opened or other data files that need to be accessed.
The term “content” may also include files having executable content, such as: object code, scripts, byte code, markup language files, and patches. In addition, “content” referred to herein, may also include files that are not executable in nature, such as documents that may need to be opened or other data files or data values that need to be accessed.
As used in this description, the terms “component,” “database,” “module,” “system,” and the like are intended to refer to a computer-related entity, either hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computing device and the computing device may be a component. One or more components may reside within a process and/or thread of execution, and a component may be localized on one computer and/or distributed between two or more computers. In addition, these components may execute from various computer-readable media having various data structures stored thereon. The components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal).
In this description, the term “portable computing device” (“PCD”) is used to describe any device operating on a limited capacity rechargeable power source, such as a battery and/or capacitor. Although PCDs with rechargeable power sources have been in use for decades, technological advances in rechargeable batteries coupled with the advent of third generation (“3G”) and fourth generation (“4G”) wireless technology have enabled numerous PCDs with multiple capabilities. Therefore, a PCD may be a cellular telephone, a satellite telephone, a pager, a PDA, a smartphone, a navigation device, a smartbook or reader, a media player, a combination of the aforementioned devices, a laptop or tablet computer with a wireless connection, among others.
The present systems and methods for controlling a bus in response to an indication that the bus has reached its capacity under present operating conditions applies a feedback signal derived from a bus interface to dynamically modify a bus clock frequency in a system-on-chip (SoC) design in real time. The derived feedback signal tracks a discrepancy or failure of the bus to meet a data demand.
The discrepancy or failure is identified by a rejection event detectable in a bus interface. Such a rejection event indicates an instantaneous mismatch between data traffic injected by a processing subsystem and data traffic that can be adequately processed by the bus. The rejection event is agnostic to the underlying application. Therefore, the rejection event can be identified and used for all use cases of the PCD. A rejection signal responsive to the rejection event can be generated with just a few logic gates, while the bus and the bus interface require no modification.
Furthermore, the generated rejection signal requires only minimal processing to produce a closed loop control system with desired response times. Thus, the present systems and methods provide an economical and readily scalable approach to managing power consumption in a PCD.
In an example embodiment, a PCD includes a processing resource, a bus, a detector, a sampler, a signal processor, and a controller. The processing resource is communicatively coupled to the bus via a bus interface. The detector is responsive to signal conditions in the bus interface. The detector is arranged to identify when the bus in incapable of supporting or achieving a present data demand. Upon identifying such a condition on the bus, the detector generates a rejection signal. The sampler is connected to an output of the detector and receives the rejection signal as well as a bus clock. The sampler is arranged to generate a modified signal in response to the rejection signal and the bus clock. The signal processor is connected to an output of the sampler and is arranged to generate a control signal when the modified signal exceeds a threshold. The controller is connected to an output of the signal processor and is arranged to generate an adjustment signal that directs the bus to change a present operating point.
The detector identifies a present state or operating condition of the bus as defined by a valid address signal asserted by the processing resource and a de-asserted ready signal from the busin the bus interface. The detector can be coupled to receive bus interface signals that connect the bus to a multimedia subsystem, a peripheral subsystem, a modem subsystem, an application subsystem, a memory subsystem, an audio subsystem, a wireless connectivity subsystem, or other subsystems of the PCD.
In an example embodiment, the sampler includes a counter that receives the bus clock and generates an output signal that changes after a select number of bus clock transitions. The select number of bus transitions applied by the sampler can be predetermined or programmable. For example, when the select number of clock signal transitions is 32, the sampler will generate an output signal change responsive to every 32nd clock signal transition and the received rejection signal. As described, the sampler is arranged to down sample or sub-sample the rejection signal. The sub-sampled representation of the rejection signal includes a reduced data rate when compared to the data rate of the rejection signal.
The signal processor receives the sub-sampled rejection signal and a clock signal other than the bus clock and generates a modified representation of the sub-sampled rejection signal. In an example embodiment, the signal processor includes an edge detector, a low-pass filter, a first comparator and a second comparator. The edge detector responds by generating a change in its output voltage when a transition is encountered in the sub-sampled rejection signal. The edge detector output is forwarded to the low-pass filter, which allows signal changes that occur at a rate below the cutoff frequency of the filter to pass through to an output of the filter. At the cutoff frequency, the filter reduces or attenuates the amplitude of the input signal by one-half. Signal transitions that occur at a rate above the cutoff frequency of the filter are further reduced from the output of the filter. Thus, a low-pass filter provides a smoothing function to an input signal by removing or reducing short term changes in the input signal voltage.
When a low-pass filter is implemented in an analog circuit with a resistor and a capacitor the cutoff frequency varies in accordance with the resistance and capacitance values of the resistor and capacitor. In various circuit arrangements switches can be controllably opened or closed to introduce different resistance and capacitance values as desired to control the cutoff frequency.
When a low-pass filter is implemented in a digital circuit, a real-time approximation of an ideal low-pass filter can be realized by truncating and windowing an impulse response. Application of the digital real-time filter requires a delay, which results in a phase shift in the output of the low-pass filter. With a greater desired accuracy of the real-time approximation comes a corresponding increase in delay or phase shift. That is, it takes time to achieve a desired accuracy.
The comparators receive the output of the low-pass filter and also receive respective threshold values. For example, a first comparator receives the sub-sampled and low-pass filtered version of the rejection signal and a first threshold voltage. The first comparator generates a change in its output voltage when the sub-sampled and low-pass filtered signal exceeds the first threshold. Thus, the first threshold is an “up” threshold. In contrast with the first comparator, the second comparator receives a second threshold voltage and generates an opposite change in its output voltage when the sub-sampled and low-pass filtered version of the rejection signal is below the second threshold voltage. Thus, the second threshold is a “down” threshold.
The output signals from the comparators are applied at the controller. The comparator generated signals are respective indicators that direct the controller that a bus operating point change is in order. A bus operating point is defined by bus clock frequency, a bus supply voltage or both. For example, each time the controller receives a change in its input indicating that the “up” threshold has been exceeded, the controller is arranged to increase the frequency of the bus clock. Conversely, each time the controller receives an change in its input indicating that the “down” threshold has been exceeded, the controller is arranged to decrease the frequency of the bus clock. In some embodiments, a bus operating voltage can be adjusted to avoid timing errors at the present bus clock frequency.
Although described with particular reference to operation within a PCD, the described closed-loop feedback control systems and methods are applicable to any larger system with a processor or processing subsystem and a communication bus where it is desirable to conserve power consumption. Stated another way, the detector, signal processor and controller may be provided to controllably adjust a bus clock frequency in a communication bus in a system other than in a portable device.
The detector, sampler, signal processor, and controller and their respective components, are hardware devices that can include any or a combination of the following technologies, which are all well known in the art: discrete electronic components, an integrated circuit, an application-specific integrated circuit having appropriately configured semiconductor devices and resistive elements, etc.
When a PCD or other system is implemented partially in software, the software portion can be used to sample and modify the detected rejection signal to generate one or more control inputs that direct a frequency synthesizer associated with a communication bus to adjust a present bus clock frequency. The software and data used in representing various elements can be stored in a memory and executed by a suitable instruction execution system (microprocessor). The software may comprise an ordered listing of executable instructions for implementing logical functions, and can be embodied in any “processor-readable medium” for use by or in connection with an instruction execution system, apparatus, or device, such as a single or multiple-core processor or processor-containing system. Such systems will generally access the instructions from the instruction execution system, apparatus, or device and execute the instructions.
Referring initially to
In a particular aspect, as depicted in
Referring to
As illustrated in
As further illustrated in
As depicted in
RF transceiver 368, which may include one or more modems, may support one or more of global system for mobile communications (“GSM”), code division multiple access (“CDMA”), wideband code division multiple access (“W-CDMA”), time division synchronous code division multiple access (“TDSCDMA”), long term evolution (“LTE”), and variations of LTE such as, but not limited to, FDB/LTE and PDD/LTE wireless protocols.
As further indicated in
In the illustrated embodiment, two instances of a bus controller 390 are depicted. However, it should be understood that any number of similarly configured bus controllers 390 can be arranged to monitor a bus interface arranged in the on-chip system 322. Alternatively, a single bus controller could be configured with inputs arranged to monitor two or more bus interfaces that communicate signals between CPU 324 and various subsystems of the PCD 320 as may be desired.
In a particular aspect, one or more of the method steps described herein may be enabled via a combination of data and processor instructions stored in the memory 344. These instructions may be executed by the multicore CPU 324 in order to perform the methods described herein. Further, the multicore CPU 324, the memory 344 or a combination thereof may serve as a means for executing one or more of the method steps described herein in order to monitor a suitably configured communication busin the PCD 320 in real time and controllably direct a change to one or more operational parameters of the communication bus. For example, when conditions in a monitored communication bus indicate that the bus is incapable of supporting a request for data, a bus clock frequency may be increased in desired steps and rechecked until the bus provides the requested data at the desired rate or the bus clock frequency is at a maximum value.
As further illustrated, the real-time bus-monitoring and control system 400 includes a second detector 430b arranged to receive a valid address signal issued by bus interface 421 of a multimedia subsystem 420 and a ready signal issued by the interface 481b of the bus 480. More specifically, the detector 430b identifies when the valid address signal is asserted and the ready signal is de-asserted. When this is the case, the detector 430b issues a rejection event pulse or rejection signal that is communicated to the sampler 440b. The sampler 440b uses a bus clock and an integrated counter to generate a sub-sampled representation of the rejection signal, which is forwarded to signal processor 500. The signal processor 500 generates a control signal in response to a system clock that is different than the bus clock. The control signal is communicated to controller 450, which generates an adjustment signal to controllably adjust the clock frequency of a bus 480 of the PCD 320. It should be understood that any number of such bus monitoring and feedback circuit arrangements can be deployed as may be desired to optimize power consumption related to the operation of the bus 480 or other buses in PCD 320.
As further indicated in
As indicated above, a rejection event or rejection signal is responsive to a valid address signal issued in a bus interface such as bus interface 481a or bus interface 481b in combination with a de-asserted ready signal in the corresponding bus interface. Trace 730 shows an example sub-sampled output signal as produced by a counter arranged within the sampler 440. As indicated in
A system clock signal coupled to the signal processor 500 is represented by trace 740. The system clock signal may be generated by a power management system (not shown) operable within the PCD 320. As indicated above, the system clock signal will preferably have a period that is different from the period of the bus clock signal.
Trace 750 is representative of the output of the edge detector 610 of the signal processor 500. As shown in
As explained, an up adjustment signal, represented by trace 770, is responsive to a comparison of the low-pass filtered signal 760 and the up threshold voltage 762. When the low-pass filtered signal 760 exceeds the first or up threshold voltage 762, the up adjustment signal is generated. Conversely, when the low-pass filtered signal 760 falls below the second or down threshold voltage 764 a down adjustment signal (not shown) is generated. These up and down adjustment signals are forwarded to a frequency synthesizer that produces a bus clock. The frequency synthesizer increases the frequency in a step-wise manner in response to an “up” adjustment signal and decreases the frequency in a step-wise manner in response to a “down” adjustment signal. When a subsequent adjustment signal is the same as a preceding adjustment signal, the controller 450 may be configured to forward a smaller step change to the frequency synthesizer used to generate the bus clock.
As indicated in
Thereafter, in response to the trace 810 meeting or exceeding the up threshold 812, the bus clock frequency is increased by a step that is equivalent in magnitude to the last downward step. In response to the trace 810 meeting or exceeding the up threshold 812 a second time absent an intervening down adjustment signal, the bus clock frequency is increased by a second step that is equivalent in magnitude to the second to last downward step. The described method of adjustment may be repeated until the bus clock frequency exceeds a mid-point of the difference between the up threshold 812 and the down threshold 814.
For example, in the illustrated embodiment, the bus clock frequency starts at approximately 250 MHz and in response to a first down adjustment signal is decreased by 100 MHz. In response to a subsequent down adjustment signal the bus clock frequency is decreased by 50 MHz. In response to another down adjustment signal without an intervening up adjustment signal, the bus clock frequency is decreased by 25 MHz to 75 MHz where it remains until the trace 810 exceeds the up threshold 812. As indicated in
As indicated above, the method 1000 can be applied by detector 430, sampler 440, signal processor 500 and controller 450 to controllably adjust the clock frequency of a bus 480 of the PCD 320. When the bus operating point is unable to provide a bus ready signal to the requesting processing resource (e.g., wireless subsystem 410), as identified by a rejection event ratio in excess of a desired threshold, the controller 450 increases the bus clock until the detector 430 no longer indicates that rejection events are occurring at or above the threshold in the bus interface or until the maximum bus clock frequency is reached. Conversely, when the bus operating point is more than capable to meet present data transfer loads, as indicated by the occurrence of rejection events that is below a desired threshold, the controller 450 decreases the bus clock frequency. These downward adjustments will continue until data demands increase as indicated in the bus interface or a minimum bus clock frequency is reached. In this manner, power consumption within the bus 480 is controllably adjusted to a level that supports the real-time use of the PCD 320.
Certain steps in the processes or process flows described in this specification naturally precede others for the invention to function as described. However, the invention is not limited to the order of the steps described if such order or sequence does not alter the functionality of the invention. That is, it is recognized that some steps may performed before, after, or in parallel (substantially simultaneously) with other steps without departing from the scope of the invention. In some instances, certain steps may be omitted or not performed without departing from the invention. Further, words such as “thereafter”, “then”, “next”, “subsequently”, etc. are not intended to limit the order of the steps. These words are simply used to guide the reader through the description of the exemplary method.
Additionally, one of ordinary skill in programming is able to write computer code or identify appropriate hardware and/or circuits to implement the disclosed invention without difficulty based on the flow charts and associated description in this specification, for example. Therefore, disclosure of a particular set of program code instructions or detailed hardware devices is not considered necessary for an adequate understanding of how to make and use the invention. The inventive functionality of the claimed processor-enabled processes is explained in more detail in the above description and in conjunction with the drawings, which may illustrate various process flows.
In one or more exemplary aspects as indicated above, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted as one or more instructions or code on a computer-readable medium, such as a non-transitory processor-readable medium. Computer-readable media include both data storage media and communication media including any medium that facilitates transfer of a program from one location to another.
A storage media may be any available media that may be accessed by a computer or a processor. By way of example, and not limitation, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to carry or store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (“CD”), laser disc, optical disc, digital versatile disc (“DVD”), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory computer-readable media.
Although selected aspects have been illustrated and described in detail, it will be understood that various substitutions and alterations may be made herein without departing from the present invention, as defined by the following claims.