This application claims priority to EPO Patent Application No. 07290951.8, filed on Jul. 27, 2007, incorporated herein by reference.
A mobile communication device, such as a cell phone, requires batteries in order for users to use the device away from a fixed power source. These batteries only last a certain amount of time based on the amount of power requirements that the communication device requires. The mobile communication device usually contains at least some processing logic (e.g., a system on a chip) and a display subsystem (e.g., LCD display) which both draw power from the batteries. The lower the amount of power drawn by the processing logic and the display subsystem, the longer the battery will last without recharging. This allows users the ability to be away from a fixed power source for longer periods of time. Thus, it would be desirable to design a system which lowers power consumption in mobile communication devices.
The problem noted above is solved in large part by a system and method for adjusting a threshold level of a first-in-first out (FIFO) data buffer (buffers data being sent from the processing logic to the display subsystem). In some embodiments, the system includes a FIFO data buffer having a programmable threshold level. The threshold level is initially set to a worst case scenario level, so that the FIFO data buffer does not empty of data. The system also comprises a hardware device which is configured to adjust the threshold level in the FIFO data buffer to a level equal to the current threshold level minus the amount of remaining data in the FIFO data buffer at the time new data enters the FIFO data buffer. The hardware device is also configured to adjust the threshold level to the initial threshold level if the FIFO data buffer underflows. The hardware device may be coupled to the FIFO data buffer, implemented in the FIFO data buffer, or implemented in the display subsystem. The system may be implemented in a mobile communications device.
Another illustrative embodiment includes a method that comprises reading data from a FIFO data buffer, detecting whether the data in the FIFO data buffer has crossed a threshold level, lowering the threshold level if there would be data left in the FIFO data buffer upon reception of new data in the FIFO data buffer, and adjusting the threshold level back to the initial threshold level if the FIFO data buffer underflows.
Yet another illustrative embodiment includes a system comprising means for reading data from a FIFO data buffer, means for detecting whether a FIFO buffer threshold level has been crossed, and means for lowering the threshold level. The system also includes means for adjusting the threshold level to an initial threshold level if the FIFO data buffer underflows and means for storing new data in the FIFO data buffer when the threshold level is crossed.
For a detailed description of various disclosed embodiments, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to suggest that the scope of the disclosure, including the claims, is limited to that embodiment.
FIFO data buffer 204 is a region of memory which stores data from processing logic 200 prior to the data being read by display subsystem 214. The data loaded into FIFO data buffer 204 by processing logic 200, thus, comprises graphics data, but also may include other than graphics data as well. Display subsystem 214 reads data from FIFO data buffer 204, and thus, the amount of unread data in FIFO data buffer 204 begins to fall. FIFO data buffer 204 is programmed with a data threshold level; hence, when the data level drops below the threshold level, processing logic 200 begins to write more data to FIFO data buffer 204. This process of processing logic 200 writing data to FIFO data buffer 204 and display subsystem 214 reading data from FIFO data buffer 204 continually repeats itself, so that FIFO data buffer 204 always has data in it.
FIFO data buffer 204 may write data to display subsystem 214 as bursts of data. That is to say, data may be written to display subsystem 214 in packets of data so as to supply display subsystem 214 with data as needed. FIFO data buffer 204 may also write data continually to display subsystem 214 as well.
In the preferred embodiment, threshold determining hardware device 206 is used to determine whether the threshold level of FIFO data buffer 204 has been crossed. However, in other embodiments, a byte counter, or any other suitable method, can determine if the threshold level has been crossed. The initial threshold level is set to an initial, pre-determined level so as to ensure that FIFO data buffer 204 will not underflow, which is to say, FIFO data buffer 204 will always have data in it. This initial level is set, for example, during initialization of electronics package 110. Hence, this original threshold level is set to a relatively high level so as to ensure that processing logic 200 will write data to FIFO data buffer 204 prior to FIFO data buffer 204 running empty of data. This is often referred to as setting the threshold level to the “worst case scenario.” The initial level depends on various factors, such as, the response latency time of system interconnect 208 and storage 202. The faster storage 202 can respond to display subsystem 214 the lower the initial threshold level may be set. Processing logic 200, along with peripheral logic which reads data from storage 202 in parallel will influence this latency.
As mentioned above, threshold determining hardware 206 is coupled to FIFO data buffer 204. Threshold determining hardware 206 preferably is capable of dynamically changing the threshold level (e.g., during run time) one or more times. For example, threshold determining hardware 206 is capable of adjusting downwards the initial threshold level of FIFO data buffer 204 and any subsequent threshold levels that are set. As such, FIFO data buffer 204 will be closer to being empty before processor logic 200 is triggered to refill the buffer. Thus, processing logic 200 will be required to write data to FIFO data buffer 204 less frequently. Because processing logic 200 writes data less frequently to FIFO data buffer 204, mobile communication device 100 saves power, as will be discussed further below.
In block 312, threshold determining hardware 206 determines whether FIFO data buffer 204 has underflowed. That is to say, threshold determining hardware 204 must determine whether FIFO data buffer 204 has run empty (i.e., run dry). If threshold determining hardware 206 determines that FIFO data buffer 204 has underflowed, then threshold determining hardware 206 adjusts the threshold level back to the default, initial worst case scenario threshold level in block 302.
However, if FIFO data buffer 204 does not run empty, in block 314, threshold determining hardware 206 lowers the threshold level. In one embodiment, block 314 is accomplished by having threshold determining hardware 206 lower the threshold level to a level equal to the current threshold level minus the amount of data remaining in FIFO data buffer 204 at the moment the first data of a new data burst, being written from processing logic 200 to FIFO data buffer 204, is stored in FIFO data buffer 204. In alternative embodiments, the threshold determining hardware 206 uses other means of lowering the threshold level. By lowering the threshold level when suitable, processing logic 200 will be required to refill FIFO data buffer 204 less often, thus requiring less power because storage 202 and system interconnect 208 may be placed into a standby mode for a longer period of time while display subsystem 214 internally processes data from FIFO data buffer 204.
Once FIFO data buffer 204 begins receiving the new data from storage 202 and system interconnect 208, the data level in FIFO data buffer 204 has reached point 440. At this point, threshold determining hardware 206 adjusts the threshold down to level 414. This is accomplished by subtracting the remaining data in FIFO data buffer 204 at point 440 from the current threshold level 404 to produce a new threshold level 414. In the preferred embodiment, a configurable security margin is also subtracted from current threshold level 404 in calculating the new threshold level 414. This is used to avoid generating data underflow in FIFO data buffer 204; however, a security margin is not required. Because storage 202 and system interconnect 208 write data to FIFO data buffer 204 faster than display subsystem 214 is able to read data from FIFO data buffer 204, the level of data in FIFO data buffer 204 increases (represented by line 410). When the level of data in FIFO data buffer 204 reaches level 406, storage 202 and system interconnect 208 stop writing new data to FIFO data buffer 204.
This process then repeats itself with the new threshold level 414 used for the FIFO data buffer 204 which establishes another even lower threshold level 416. The process continues until an underflow would occur if the threshold level were lowered. For example, line 418 shows display subsystem 214 reading data from FIFO data buffer 204. When the data level in FIFO data buffer 204 reaches threshold level 416 at point 420 the processing logic 200, storage 202, and system interconnect 208 are not able to wakeup and write data to FIFO data buffer 204 in time to keep data in FIFO data buffer 204. This results in underflow in FIFO data buffer 204 at point 422. At this point, threshold determining hardware 206 adjusts the threshold level to the default, initial threshold, in this case 404. The whole method begins over again at point 424.
It is noted here that a threshold determining hardware such as that disclosed herein creates several potential advantages. Because the processing logic is required to write data to the FIFO data buffer less frequently, the idle time of the processing logic's interconnect with the FIFO data buffer is maximized. With a maximized idle time for the processing logic's interconnect, the low power refresh mode is dramatically more efficient because the power consumption is drastically reduced. Also, the use of hardware to adjust the threshold value of the FIFO data buffer allows for real-time monitoring and tuning of the actual threshold value which software would not allow. A software solution, thus, would be required to always use a “worst case scenario” threshold level.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Number | Date | Country | Kind |
---|---|---|---|
07290951.8 | Jul 2007 | EP | regional |