GB2455354A - Controlling the speed of a processing element based on the fullness level of a buffer - Google Patents

Controlling the speed of a processing element based on the fullness level of a buffer Download PDF

Info

Publication number
GB2455354A
GB2455354A GB0723981A GB0723981A GB2455354A GB 2455354 A GB2455354 A GB 2455354A GB 0723981 A GB0723981 A GB 0723981A GB 0723981 A GB0723981 A GB 0723981A GB 2455354 A GB2455354 A GB 2455354A
Authority
GB
United Kingdom
Prior art keywords
data
buffer
processing element
buffers
condition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB0723981A
Other versions
GB0723981D0 (en
Inventor
John Turner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Nokia Oyj
Symbian Software Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj, Symbian Software Ltd filed Critical Nokia Oyj
Priority to GB0723981A priority Critical patent/GB2455354A/en
Publication of GB0723981D0 publication Critical patent/GB0723981D0/en
Priority to PCT/GB2008/003998 priority patent/WO2009071887A1/en
Publication of GB2455354A publication Critical patent/GB2455354A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

The invention relates to controlling the execution speed of a processor based on the amount of data held in a buffer. Essentially, the speed of the processing element is decreased (i.e. throttled back) when the data level in the buffer reaches a first threshold value so as to avoid an overflow condition. The reverse is also true - when the data level falls below a second threshold value (different to the first) the speed of the processor can be increased to avoid underflow, or reduced further to save power. The main embodiment of this invention is an audio device, where avoiding over and underflow is important to maintain audio quality.

Description

Controlling the Operating Speed of a Processor
Technical Field
The present invention relates to a data processing apparatus comprising a processing element, and to a method of controlling the operating speed of a processing element of such a data processing apparatus.
Background to the Invention
The concept of technological convergence is increasingly prevalent, and has led to the development of multi-function devices, such as mobile communications devices having a much broader range of functionality than simple telephony functions. Such devices are commonly referred to as "smart phones", and typically include digital cameras which are able to record moving images and take still photographs, media player software capable of playing pre-recorded audio and video files such as mp3 arid mp4 files, and additional application software providing, for example, an electronic organiser, web browser, voice recorder, games and the like.
Figure 1 is a schematic representation of the internal architecture of a typical smart phone 10.
RF processing hardware 12, baseband processing hardware 14 and power regulating hardware 16 are provided for handling telecommunications operations of the smart phone 10, whilst an application processor 18 is responsible for running application software such as a media player, web browser, organiser, games and the like, as well as an operating system of the smart phone 10. Various memories are provided, including a read-only memory (ROM) 22 in which static data such as the operating system and an associated graphical user interface of the smart phone 10 are stored. Random access memory (RAM) 24 is also provided, for running application software, whilst a user data memory 26 is provided for storing user information such as contact lists, text messages and emails.
The application processor 18 is used when a media operation such as recording or playback of an audio or video file is performed, and such an operation is typically performed by dividing the data representing the material to be recorded or played into small "chunks", with each of these chunks being processed separately by the application processor 18. Accurate recording or playback relies upon isochronous processing of these chunks, in that an entire chunk of data must be processed during a particular time period if distortion is to be avoided.
This does not present a problem when only one media operation is being carried out by the smart phone 10, as all (or at least most) of the processing resources of the application processor 18 can be dedicated to the media operation. However, if the smart phone 10 is simultaneously performing another operation, such as browsing the world wide web, the processing resources of the application processor 18 are divided, and this can lead to a loss of isochronous processing of the data chunks, as insufficient processing resources are available to process each chunk in the required time period. This results in distortion of the material to be recorded or played, which, in the exemplary case of audio playback, is manifested as pops, clicks and periods of silence during playback.
Some application processors designed for use in smart phones and other devices have a so-called "turbo mode", which can be activated to accelerate the application processor by increasing its clock speed, so that more instructions can be performed by the application processor in a given time period (usually expressed in terms of millions of instructions per second, or MIPS). Activating the turbo mode of the application processor of a device thus offers a solution to the problem of distortion caused by insufficient processing resources when performing a media operation. However, activating the turbo mode of an application processor typically requires an increase in the supply voltage to the application processor, thus increasing its power consumption and reducing the usable battery life of the device in which the application processor is installed. It is therefore important that the turbo mode of the application processor is only activated when necessary, and is deactivated immediately the processing burden on the application processor is reduced, so as to conserve battery life.
Prior Art
Various solutions have been proposed to the problem of balancing the need for acceleration of the application processor to improve the performance of a device against the desire for long battery life. A simple approach, which has previously been adopted in the field of personal computers, is to allow a user of the device to activate the turbo mode at will. An obvious disadvantage of this approach is that users may activate the turbo mode and accidentally (or deliberately) fail to deactivate it. Personal computers are not subject to the same power limitations as other devices, such as mobile communications devices, for example, as they are typically powered by mains electricity, and thus this approach does not give rise to any problems in terms of power consumption or battery life (although the lifespan of the processor may be reduced). In contrast, failure to deactivate the turbo mode of an application processor of a mobile communications device will inevitably lead to a reduction in the usable battery life of the device.
An alternative is to activate the turbo mode at the application level, by permitting application software such as a media player to activate it on commencement of a media operation such as playback of an mp3 audio file. As is stated above, when only a single media operation is being performed, there is not usually a problem of insufficient processing resources, and as an individual application runnil)g on a device is typically unaware of other applications that may be running, the application would have to activate the turbo mode as a safeguard to ensure that sufficient processing resources are available in case any other applications are running, which would result in a needless increase in power consumption in many cases.
A further alternative is to monitor the load on the application processor, and to activate the turbo mode when the load approaches 100 per cent. However, it may not always be necessary or appropriate to activate the turbo mode in these circumstances, as an application processor load of 100 per cent does not necessarily correspond to a user perception of poor performance. For example, a high application processor load may be due to high-speed processing of data downloaded using HSDPA. Activating the turbo mode in this case may result in a small increase in the speed at which the downloaded data is processed, which may well go unnoticed by the user, whereas the accompanying increase in power consumption and corresponding reduction in usable battery life is likely to be more apparent. Instead, the turbo mode should only be activated for applications such as media operations where the user would otherwise perceive a reduction in the performance of the device.
Summary of Invention
According to a first aspect of the invention, there is provided a data processing apparatus comprising a processing element, a source or sink of data and a data buffer for transferring data between the processing element and the source or sink, the data processing apparatus further comprising a buffer monitor for monitoring the condition of the data buffer and adjusting the operating speed of the processing element according to the condition of the data buffer.
By monitoring the condition of the data buffer, underperformance of the processing element can readily be detected, and the operating speed of the processor can be increased, thus ensuring that a user of the apparatus does not perceive a reduction in the performance of the apparatus. Similarly, if the processing element is needlessly over-performing, because the operating speed of the processing element is higher than necessary for the particular operation or application being performed, this can readily be detected and the operating speed of the processing element can be reduced as appropriate. In this way, the operating speed of the processing element can be increased when it is necessary to achieve or maintain an acceptable level of perceived performance, and can be reduced when appropriate to reduce power consumption and thus increase usable battery life.
Adjusting the operating speed of the processing element may comprise activating a mode of the processing element in which the operating speed is increased.
The buffer monitor may compare the condition of the data buffer to an activation threshold.
The buffer monitor may compare the condition of the data buffer to a deactivation threshold.
A plurality of data buffers may be provided for transferring data between the source or sink and the processing element.
The buffer monitor may compare the number of full data buffers to an activation threshold.
The buffer monitor may compare the number of full data buffers to a deactivation threshold.
The use of a plurality of data buffers simplifies monitoring, as the number of individual data buffers that are full can be monitored and compared to the activation andlor deactivation thresholds, rather than monitoring the condition (e.g. the amount of memory occupied) of a single data buffer. Additionally, the use of a plurality of data buffers enables the processing element to operate on one data buffer whilst the source or sink operates on a different buffer, thus ensuring isolation between the source or sink and the processing element, which minimises the risk of distortion of the data caused by processing the data in an incorrect order.
Preferably, the activation threshold and the deactivation threshold are different.
The activation threshold may be greater than the deactivation threshold.
Preferably, when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
The source or sink of data may comprise a real-time element.
According to a second aspect of the invention, there is provided a mobile communications device comprising an apparatus according to any one of the preceding paragraphs.
According to a third aspect of the invention, there is provided a method of controlling the operating speed of a processing element in a data processing system, the method comprising monitoring the condition of a data buffer of the system that is provided for transferring data between a source or sink of data of the system and the processing element and adjusting the speed of the processing element in accordance with the condition of the data buffer.
Adjusting the operating speed of the processing element may comprise activating a mode of the processing element in which the operating speed is increased.
Monitoring the condition of the data buffer may comprise comparing the condition of the data buffer to an activation threshold.
Monitoring the condition of the data buffer may comprise comparing the condition of the data buffer to a deactivation threshold.
A plurality of data buffers may be provided for transferring data between the source or sink and the processing element.
Monitoring the condition of the data buffers may comprise comparing the number of full data buffers to an activation threshold.
Monitoring the condition of the data buffers may comprise comparing the number of full data buffers to a deactivation threshold.
Preferably, the activation threshold and the deactivation threshold are different.
The activation threshold may be greater than the deactivation threshold.
Preferably, when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
The source or sink of data may comprise a real-time element.
According to a fourth aspect of the invention, there is provided a program for causing processing means to perform the method of any one of the preceding paragraphs.
Brief Description of the Drawings
Embodiments of the invention will now be described, strictly by way of example only, with reference to the accompanying drawings, of which: Figure 1 is a schematic diagram showing functional blocks of a typical "smart phone"; Figure 2 is a schematic diagram illustrating a simple prior art media processing system; Figure 3 is a schematic diagram showing functional blocks of a data processing apparatus according to one embodiment of the invention that are used in an audio recording operation; Figure 4 is a flow diagram showing steps involved in the audio recording operation illustrated in Figure 3; Figure 5 is a schematic diagram showing functional blocks of a data processing apparatus according to one embodiment of the invention that are used in an audio playback operation; Figure 6 is a schematic flow diagram showing steps involved in the audio playback operation illustrated in Figure 4; and Figure 7 is a schematic diagram showing functional blocks of a data processing apparatus according to an alternative embodiment of the invention that are used in an audio playback operation;
Description of the Embodiments
Referring first to Figure 1, a mobile communications device, in this case a smart phone, is shown generally at 10. As described above, the smart phone 10 includes RF processing hardware 12, baseband processing hardware 14 and power regulating hardware 16 for handling telecommunications operations. These hardware features are listed here for the sake of completeness, but are not directly relevant to the embodiments of the invention described below.
An application processor 18 is provided for handling the operation of application software running on the smart phone 10, such as a media player, web browser, organiser, games and the like, as well as an operating system of the smart phone 10. The application processor 18 has a so-called "turbo mode", meaning that it can be accelerated by increasing its clock speed, enabling it to perform more instructions in a given time period. Activating the turbo mode requires an increase in a supply voltage to the application processor 18, and thus entails an increase in its power consumption, and hence the power consumption of the smart phone as a whole.
The smart phone 10 also includes a read only memory (ROM) 22, in which an operating system and associated graphical user interface of the smart phone 10 are stored. A random access memory (RAM) 24 is also provided, for running application software such as an electronic organiser, media player and the like. A user data memory 26 is also provided for storing user data such as contact lists, text messages, emails and the like.
Reference will now be made to Figure 2, to describe the operation of a known simple media processing system. The media processing system is shown generally at 30, and comprises a data source 32, a data sink 34, a processing element 36, data buffers 38, 40 for transferring data between the source 32 and the processing element 36 and data buffers 42, 44 for transferring data between the processing element 36 and the sink 34. The source 32 and the sink 34 are typically real-time elements, in that they continuously produce or consume data.
In an audio processing system, for example, the source 32 may be a microphone, and the sink 34 may be a loudspeaker, whilst the processing element 36 may be a filter, codec, mixer or the like.
Two data buffers 38, 40 (identified as Buffer 0 and Buffer 1 respectively) are used to transfer data between the source 32 and the processing element 36, so that data contained in one of the buffers can be processed whilst the other buffer is being filled by the source 32. Similarly, two data buffers 42, 44 (again identified as Buffer 0 and Buffer 1 respectively) are used to transfer data between the processing element 36 and the sink 34, so that the sink 34 can empty one buffer whilst the processing element 36 is filling the other.
In use of the system 30, the source 32 generates data, fbr example a sequence of samples representing the speech of a user of the system 30. This data is passed initially to the buffer 38 (Buffer 0), for processing by the processing element 36 in accordance with the media operation being performed, for example filtering. As the data in the buffer 38 is processed, the buffer 40 is filled with data generated by the source 32. Once the buffer 38 has been emptied by the processing element 36, processing of the data in the buffer 40 commences, whilst the buffer 38 is filled with data generated by the source 32.
On the sink side of the system 30, processed data is transferred initially from the processing element 36 to the buffer 42, from where it is transferred to the sink 34, which may be a loudspeaker, for example. As the sink 34 extracts the data from the buffer 42, the processing element 36 fills the buffer 44 with processed data, and when the buffer 42 is empty, the sink 34 begins extracting data from the buffer 44 whilst the processing element 36 re-fills the buffer 42 with processed data. This process repeats until the media operation is completed.
As is explained above, accurate performance of a media operation relies upon isochronous processing of data by the processing element 36, and this can be impeded if the processing element 36 is required to perform additional tasks such as running another application, as the processing resources of the processing element 36 are divided between the media operation and the other application. Where isochronous processing of data by the processing element 36 is lost, distortion is introduced during processing. For example, with a microphone as the source 32, loss of isochronous data processing will result in overflow of the data buffers 38, 40, such that data will be lost, whilst if the sink 34 is a loudspeaker, loss of isochronous processing will result in underfiow of the data buffers 42, 44, causing audible pops, clicks and periods of silence.
The present invention addresses this problem by monitoring the condition of a data buffer used for transferring data between a source or sink of data and a processing element, such as the application processor 18 of a smart phone 10, and adjusting the operating speed of the processing element in accordance with the condition of the data buffer, providing additional processing resources when necessary to prevent any overflow or underfiow of the data buffer.
Figure 3 is a schematic representation of a data processing apparatus, shown generally at 50, which may be comprised of functional elements of a device such as the smart phone 10 illustrated in Figure 1. In this example, the data processing apparatus 50 is configured to perform an audio recording operation.
The apparatus 50 comprises a microphone 52 and an associated microphone driver 54 for converting an analogue signal from the microphone 52 into digital samples. A plurality (for example 20) of data buffers 56, 58, 60, 62 are provided for transferring data between the microphone driver 54 and a processing element 64, such as the application processor 18 of the smart phone 10 illustrated in Figure 1. The data buffers 56, 58, 60, 62 are typically allocated from the available RAM 24 of the smart phone 10 prior to the commencement of the recording operation. In this example, the processing element 64 is configured as an encoder (i.e. the application processor 18 is running an appropriate software application) for converting samples generated by the microphone driver 54 into a digital audio file 66 such as an mp3 file. A buffer monitor 68 is provided for monitoring the condition of the data buffers 56, 58, 60, 62 and controlling the operating speed of the processing element 64 accordingly.
The operation of the data processing apparatus 50 during an audio recording operation is outlined in the flow chart of Figure 4. The audio recording operation commences at step 70, which instigates sampling by the microphone driver 54 of an audio signal generated by the microphone 52, at step 72. For CD quality audio, a sampling rate of 44.lkl-Iz must be used, with each sample comprising 16 bits of data.
A sample produced by the microphone driver 54 is stored, at step 74, in the next available data buffer 56, 58, 60, 62. On commencement of an audio recording operation, the data buffers 56, 58, 60, 62 are typically empty, and thus samples are typically stored in the buffer 56 (buffer 0), where they can be directly accessed by the processing element 64 for immediate processing. However, as the recording operation proceeds, more samples are generated and may need to be stored in the other buffers 58, 60, 62, depending upon the rate at which the stored samples are processed by the processing element 64. Thus, a check is made at step 76 to determine whether the "current" data buffer 56, 58, 60, 62 (i.e. the data buffer 56, 58, 60, 62 in which the last sample was stored) is full, and if this check returns a positive result, that data buffer 56, 58, 60, 62 is marked as full, to indicate that it is not available, thus ensuring that no samples are lost by trying to store them in a full data buffer 56, 58, 60, 62. If the check performed at step 76 returns a negative result, no further action is taken, and the next sample generated by the microphone driver can be stored in the current data buffer 56, 58, 60, 62.
As the data buffers 56, 58, 60, 62 are being filled with samples generated by the microphone driver 54, the processing element 64 extracts data from the data buffers 56, 58, 60, 62 and processes it to generate an audio file 66. Data is extracted from those data buffers 56, 58 60, 62 that are marked as full, whilst the microphone driver fills those of the buffers 56, 58, 60, 62 that are not marked as full. In this way, the microphone driver 54 and the processing element 64 are isolated from one another, thus ensuring that the processing element 54 is only able to process data in the correct order, which minimises the likelihood of distortion caused by incorrect ordering of processed data.
At the start of the recording operation the processing element 64 extracts data from the data buffer 56 (buffer 0), and when all the data has been extracted from this data buffer 56, the processing element 64 marks the data buffer 56 as empty, to enable samples generated by the microphone driver 54 to be stored in that data buffer 54 again. The processing element 64 then extracts and processes data from the next data buffer 56, 58, 60, 62 marked as full, again marking the selected data buffer 56, 58, 60, 62 as empty when all of the data has been extracted and processed. This continues until the recording operation has been completed.
In normal, unimpeded operation of the apparatus 50 (e.g. when only a single audio recording operation is being performed), the processing element 64 typically only extracts data from the buffers 56 and 58 (buffers 0 and 1), as the rate of operation of the processing element 64 is equal to or greater than the rate at which the microphone driver 54 generates samples, and thus only these two buffers are required, with one being filled with fresh samples as the processing element 64 is extracting and processing the data contained in the other. However, if another application is being run on the application processor 18 simultaneously, there may be insufficient processing resources for the processing element 64 to process all of the samples in one of the data buffers 56, 58, 60, 62 before another of the data buffers 56, 58, 60, 62 has been filled with samples generated by the microphone driver 54, and thus other data buffers 56, 58, 60, 62 must be used to store the samples. If this situation persists, a backlog of unprocessed data builds up in the data buffers 56, 58, 60, 62.
The buffer monitor 68 continuously monitors the condition of the data buffers 56, 58, 60, 62, and performs a check (at step 80) each time a data buffer 56, 58, 60, 62 is marked as full to determine whether the number of data buffers 56, 58, 60, 62 that are in a predetermined condition betters a threshold. In this example, the monitoring means 68 compares the number of data buffers 56, 58, 60, 62 that are marked as full to a predetermined threshold, but it will be appreciated that other checks of the condition of the data buffers 56, 58, 60, 62 are possible. The use of a plurality of data buffers 56, 58, 60, 62 simplifies this monitoring, as the buffer monitor 68 is only required to count the number of buffers 56, 58, 60, 62 that are marked as full.
A large number of data buffers 56, 58, 60, 62 being marked as full is indicative of slow processing of the samples by the processing element 64. Thus, if the check performed at step returns a positive result, indicating that the number of data buffers 56, 58, 60, 62 which are marked as full exceeds an activation threshold, which in this exemplary embodiment is five, the buffer monitor 68 activates the turbo mode of the application processor 18 to increase the number of instructions that can be carried out by the application processor 18 per second, and thus the rate at which the samples stored in the buffers 56, 58, 60, 62 are processed. Activation of the turbo mode of the application processor 18 typically increases
II
this data processing rate to a level above the rate at which the samples are generated by the microphone driver 54, so that the backlog of samples stored in the buffers 56, 58, 60, 62 can be reduced.
If the check performed at step 80 returns a negative result, indicating that the number of buffers 56, 58, 60, 62 which are marked as full does not exceed the activation threshold, a further check is made at step 84 to determine whether the turbo mode of the application processor 18 has been activated. This step is required because each time a buffer 56, 58, 60, 62 is emptied by the processing element 64 (as described in detail below), that buffer 56, 58, 60, 62 is marked as empty, thus reducing the number of data buffers 56, 58, 60, 62 marked as full. It is therefore possible for the turbo mode to remain activated after the number of data buffers 56, 58, 60, 62 has dropped below the activation threshold, if it has not been deactivated, as described below.
If the turbo mode is activated, a check is performed at step 86 to determine whether the number of data buffers 56, 58, 60, 62 marked as full has dropped below a deactivation threshold. If so, the turbo mode of the application processor 18 is deactivated, causing the application processor 18 to operate at its normal speed, thus reducing its power consumption.
The deactivation threshold may be equal to the activation threshold, so that the turbo mode is deactivated as soon as the number of data buffers 56, 58, 60, 62 marked as full has dropped below the application threshold. Alternatively, the deactivation threshold may be smaller than the activation threshold, to allow a larger amount of data to be processed before the turbo mode is deactivated, thus reducing the amount of unprocessed data in the buffers 56, 58, 60, 62. In this exemplary embodiment, the deactivation threshold is two, but it will be appreciated that a number of different factors will be taken into account when determining both the activation threshold and the deactivation threshold, for example the particular operation being carried out, the number and size of the data buffers 56, 58, 60, 62 and the type of data contained within the data buffers 56, 58, 60, 62.
By monitoring the condition of the data buffers 56, 58, 60, 62 and adjusting the speed of the application processor 18 in this way, accurate audio recording can be achieved without any loss of data.
Turning now to Figure 5, there is shown, in schematic form, a data processing apparatus 90 configured for playback of an audio file. As before, the apparatus 90 may be comprised of functional elements of a device such as the smart phone 10 shown in Figure 1.
The apparatus comprises a processing element 92, such as the application processor 18 of the smart phone 10 shown in Figure 1, for processing an audio file 94 to convert it into data that can be used by a speaker driver 96 to cause a loudspeaker 98 to generate an audio signal. A plurality of data buffers 100, 102, 104, 106 are provided for transferring data between the processing element 92 and the speaker driver 96,and these data buffers 100, 102, 104, 106 are typically allocated from the available RAM of the smart phone 10 or other device prior to commencement of the audio playback operation. A buffer monitor 108 is provided for monitoring the condition of the data buffers 100, 102, 104, 106 and controlling the operating speed of the processing element 92 accordingly.
The operation of the data processing apparatus 90 during an audio playback operation is outlined in the flow diagram of Figure 6. On commencement of an audio playback operation at step 110, the data buffers 100, 102, 104, 106 are full of data retrieved from the audio file 94 and processed by the processing element 92, and are marked as being full. The speaker driver 96 extracts data from the first available non-empty data buffer 100, 102, 104, 106 and converts it to an audio signal which can be passed to the loudspeaker 98. A check is made at step 114 to determine whether the current data buffer 100, 102, 104, 106 (i.e. the data buffer from which data has been extracted) is empty. If this check returns a negative result, extraction of data can continue, until the current data buffer 102, 104, 106, 108 is empty. If this check returns a positive result, the current buffer is marked as empty (at step 116).
As the speaker driver 96 is extracting data from the data buffers 100, 102, 104, 106, the processing element 92 refills the data buffers 100, 102, 104, 106 with data that has been retrieved from the audio file 94 and processed, marking each of the data buffers 100, 102, 104, 106 as being full once they have been refilled. In normal, unimpaired operation of the processing element (e.g. when only a single audio playback operation is being performed), the processing element 92 operates at a speed equal to or greater than the speed at which the speaker driver 96 is able to extract data from the data buffers 100, 102, 104, 106, and thus there is always sufficient data available in the data buffers 100, 102, 104, 106 for an undistorted audio signal to be produced. However, if another application is being run on the application processor 18 simultaneously, there may be insufficient processing resources to allow the processing element 92 to operate at this speed, and if this occurs there may not be sufficient data in the data buffers 100, 102, 104, 106 for the speaker driver 96 to generate an undistorted audio signal.
The buffer monitor 108 continuously monitors the condition of the data buffers 100, 102, 104, 106 and performs a check, at step 118, to determine whether the number of data buffers 100, 102, 104, 106 that are in a predetermined condition betters a predetermined threshold. In this example the monitoring means 108 compares the number of data buffers 100, 102, 104, 106 that are marked as full (or alternatively the number of data buffers 100, 102, 104, 106 that are marked as empty) to a predetermined threshold, but it will be appreciated that other checks of the condition of the data buffers 100, 102, 104, 106 are possible. If the result of the check carried out at step 118 by the monitoring means 108 is positive, indicating that the number of data buffers 100, 102, 104, 106 that are marked as full has fallen to a predetermined activation threshold, the operating speed of the processing element 92 is increased, by activating the turbo mode of the application processor 1 8.
Activating the turbo mode of the application processor 18 in this way increases the rate at which the processing element 92 processes data from the audio file 94, thus increasing the rate at which the data buffers 100, 102, 104, 106 are filled with data. Typically, activating the turbo mode of the processor 18 increases the data processing rate of the processing element 92 to a level above the rate at which data is extracted from the buffers 100, 102, 104, 106 by the speaker driver 96, so that a large reserve of data can be built up in the buffers 100, 102, 104, 106, to ensure that sufficient data is available to generate an undistorted audio signal.
If the check carried out at step 118 returns a negative result, a check is carried out at step 122 to determine whether the turbo mode of the application processor 18 has been activated. If this check returns a negative result, the audio playback operation simply continues, returning to step 112. However, if this check returns a positive result, a check is made at step 124 to determine whether the number of data buffers 100, 102, 104, 106 has reached a deactivation threshold. If so, the turbo mode of the application processor 18 is deactivated, causing the application processor 1 8 to operate at its normal speed, thus reducing its power consumption.
The deactivation threshold may be equal to the activation threshold, so that the turbo mode is deactivated as soon as the number of data buffers 100, 102, 104, 106 marked as full has risen to the application threshold. Alternatively, the deactivation threshold may be larger than the activation threshold, to allow a larger amount of data to be processed before the turbo mode is deactivated, thus increasing the amount of data stored in the buffers 100, 102, 104, 106.
For example, the activation threshold may be two, and the deactivation threshold may be five, but it will be appreciated that a number of different factors will be taken into account when determining both the activation threshold and the deactivation threshold, for example the particular operation being carried out, the number and size of the data buffers 100, 102, 104, 106 and the type of data contained within the data buffers 100, 102, 104, 106.
In the examples described above, the data buffers 56, 58, 60, 62 and 100, 102, 104, 106 are dynamically allocated only to the "source" and "sink" sides respectively of a data processing system prior to commencement of a media operation. The data buffers 56, 58, 60, 62 and 100, 102, 104, 106 are typically allocated from the RAM 24 of a device such as the smart phone shown in Figure 1. If a more complex application such as video telephony is running on a device, additional data buffers are required on both sides of the data processing system, as both recording and playback operations are being performed. The required buffers are again allocated from the RAM 24 of the device prior to commencement of the application.
It should be noted that the additional data buffers used in the embodiments described above do not necessarily require more memory than known systems, but instead may allocate the memory differently. Thus, for example, in a known system, such as the one shown in Figure 2, the "source" and "sink" sides of the system may each have two data buffers 38, 40 and 42, 44, which may each be 5 kilobytes (KB), whereas in a system according to the present invention twenty data buffers 56, 58, 60, 62 may be provided, each of 0.5 KB, for example.
The embodiments described above in relation to Figures 3 and 5 use a plurality of individual small data buffers for transferring data between the source or sink and the processing element. However, the invention can equally be implemented using a single larger data buffer, such as a "first in first out" (FIFO) buffer. An exemplary embodiment of an audio recording apparatus in which a single data buffer is used is shown generally at 130 in Figure 7. In this example, a microphone 132 and an associated microphone driver 134 convert an analogue audio signal into digital samples, which are converted by a processing element 140, such as the application processor 18 of the smart phone 10 illustrated in Figure 1, into an audio file such as an mp3 file. A single FIFO data buffer 136 is provided for transferring data between the microphone driver 134 and the processing element 140, whilst a buffer monitor 138 is provided for monitoring the condition of the data buffer 136 and controlling the operating speed of the processing element 140 accordingly.
The operation of the data processing apparatus 130 is similar to the operation of the apparatus shown in Figure 3, with the microphone driver filling the data buffer 136 as the processing element 140 extracts data from it. As the data buffer 136 is a FIFO buffer, data is processed by the processing element 140 in the order in which it enters the data buffer 136, thus minimising the risk of distortion caused by processing the data "out of turn". The buffer monitor 138 evaluates the amount of memory of the data buffer 136 that is occupied by data (rather than counting the number of individual data buffers that are marked as full), and compares this to an activation threshold to determine whether the turbo mode of the application processor 18 is to be activated. If the amount of occupied memory of the data buffer 136 exceeds the activation threshold, the turbo mode of the application processor 18 is activated, thus increasing the number of instructions executed per second, to enable the application processor 18 to process the data stored in the data buffer 136 more quickly.
Similarly, when the turbo mode of the application processor 18 is activated, the buffer monitor 138 compares the amount of memory of the data buffer 136 that is occupied by data to a deactivation threshold to determine whether the turbo mode of the application processor 18 should be deactivated. The activation threshold and the deactivation threshold may each be a percentage of the total capacity of the data buffer 138, and the activation threshold and the deactivation threshold may be the same, such that the turbo mode is deactivated as soon as the amount of occupied memory of the data buffer 136 has dropped below the application threshold. However, it may be preferable for the deactivation threshold to be lower than the application threshold, to allow a larger amount of data to be processed before the turbo mode is deactivated, thus reducing the amount of unprocessed data stored in the data buffer 136.
For example, the activation threshold may be 60 per cent of the total capacity of the data buffer 136, whilst the deactivation threshold may be 20 per cent of the total capacity of the data buffer, although a number of factors will be taken into account in determining both the activation threshold and the deactivation threshold, for example the size of the data buffer 136, the particular operation being carried out and the type of data contained in the data buffer 136.
Although the examples described above relate to increasing selectively the operating speed of the application processor 18 of a device such as the smart phone 10 of Figure 1 in accordance with the condition of one or more data buffers, it will be appreciated that the operating speed of the application processor 18 may also be reduced, in certain circumstances. For example, in an audio playback operation, it may be detected that the processing element 92 is able to perform the required processing of the data from the audio file 94 at a much higher rate than the speaker driver 96 is able to extract the processed data from the data buffers 100, 102, 104, 106, and thus the processing element 92 is idle for much of the time. In this case, the operating speed of the application processor 18 can be reduced, so that the processing element 92 operates at substantially the same speed as the speaker driver 96. This reduction in the operating speed of the application processor 18 is accompanied by a reduction in the required supply voltage, and thus a reduction in power consumption.
The examples presented above describe the invention in terms of functional elements, which may be hardware elements, but it will be clear to those skilled in the relevant art that the invention can be implemented as a software application provided as a set of instructions for execution by an appropriate processor.
The above embodiments have been described in relation to a mobile telecommunications device such as a smart phone or the like, but it will be appreciated that the embodiments and the invention may find application in any other device which uses a processor whose operating speed can be changed, by activating a turbo mode or similar, and are particularly suited to devices which are intended to perform media operations, for example portable media players such as MP3 or MP4 players, personal computers, DVD players and the like.
The invention is also particularly suitable for data processing applications where a particular level of performance, in terms of processing speed, is required, for example in networking applications where the invention could be employed to monitor incoming data to ensure that it is being processed as quickly as possible. Controlling the Operating Speed of a Processor
Technical Field
The present invention relates to a data processing apparatus comprising a processing element, and to a method of controlling the operating speed of a processing element of such a data processing apparatus.
Background to the Invention
The concept of technological convergence is increasingly prevalent, and has led to the development of multi-function devices, such as mobile communications devices having a much broader range of functionality than simple telephony functions. Such devices are commonly referred to as "smart phones", and typically include digital cameras which are able to record moving images and take still photographs, media player software capable of playing pre-recorded audio and video files such as mp3 arid mp4 files, and additional application software providing, for example, an electronic organiser, web browser, voice recorder, games and the like.
Figure 1 is a schematic representation of the internal architecture of a typical smart phone 10.
RF processing hardware 12, baseband processing hardware 14 and power regulating hardware 16 are provided for handling telecommunications operations of the smart phone 10, whilst an application processor 18 is responsible for running application software such as a media player, web browser, organiser, games and the like, as well as an operating system of the smart phone 10. Various memories are provided, including a read-only memory (ROM) 22 in which static data such as the operating system and an associated graphical user interface of the smart phone 10 are stored. Random access memory (RAM) 24 is also provided, for running application software, whilst a user data memory 26 is provided for storing user information such as contact lists, text messages and emails.
The application processor 18 is used when a media operation such as recording or playback of an audio or video file is performed, and such an operation is typically performed by dividing the data representing the material to be recorded or played into small "chunks", with each of these chunks being processed separately by the application processor 18. Accurate recording or playback relies upon isochronous processing of these chunks, in that an entire chunk of data must be processed during a particular time period if distortion is to be avoided.
This does not present a problem when only one media operation is being carried out by the smart phone 10, as all (or at least most) of the processing resources of the application processor 18 can be dedicated to the media operation. However, if the smart phone 10 is simultaneously performing another operation, such as browsing the world wide web, the processing resources of the application processor 18 are divided, and this can lead to a loss of isochronous processing of the data chunks, as insufficient processing resources are available to process each chunk in the required time period. This results in distortion of the material to be recorded or played, which, in the exemplary case of audio playback, is manifested as pops, clicks and periods of silence during playback.
Some application processors designed for use in smart phones and other devices have a so-called "turbo mode", which can be activated to accelerate the application processor by increasing its clock speed, so that more instructions can be performed by the application processor in a given time period (usually expressed in terms of millions of instructions per second, or MIPS). Activating the turbo mode of the application processor of a device thus offers a solution to the problem of distortion caused by insufficient processing resources when performing a media operation. However, activating the turbo mode of an application processor typically requires an increase in the supply voltage to the application processor, thus increasing its power consumption and reducing the usable battery life of the device in which the application processor is installed. It is therefore important that the turbo mode of the application processor is only activated when necessary, and is deactivated immediately the processing burden on the application processor is reduced, so as to conserve battery life.
Prior Art
Various solutions have been proposed to the problem of balancing the need for acceleration of the application processor to improve the performance of a device against the desire for long battery life. A simple approach, which has previously been adopted in the field of personal computers, is to allow a user of the device to activate the turbo mode at will. An obvious disadvantage of this approach is that users may activate the turbo mode and accidentally (or deliberately) fail to deactivate it. Personal computers are not subject to the same power limitations as other devices, such as mobile communications devices, for example, as they are typically powered by mains electricity, and thus this approach does not give rise to any problems in terms of power consumption or battery life (although the lifespan of the processor may be reduced). In contrast, failure to deactivate the turbo mode of an application processor of a mobile communications device will inevitably lead to a reduction in the usable battery life of the device.
An alternative is to activate the turbo mode at the application level, by permitting application software such as a media player to activate it on commencement of a media operation such as playback of an mp3 audio file. As is stated above, when only a single media operation is being performed, there is not usually a problem of insufficient processing resources, and as an individual application runnil)g on a device is typically unaware of other applications that may be running, the application would have to activate the turbo mode as a safeguard to ensure that sufficient processing resources are available in case any other applications are running, which would result in a needless increase in power consumption in many cases.
A further alternative is to monitor the load on the application processor, and to activate the turbo mode when the load approaches 100 per cent. However, it may not always be necessary or appropriate to activate the turbo mode in these circumstances, as an application processor load of 100 per cent does not necessarily correspond to a user perception of poor performance. For example, a high application processor load may be due to high-speed processing of data downloaded using HSDPA. Activating the turbo mode in this case may result in a small increase in the speed at which the downloaded data is processed, which may well go unnoticed by the user, whereas the accompanying increase in power consumption and corresponding reduction in usable battery life is likely to be more apparent. Instead, the turbo mode should only be activated for applications such as media operations where the user would otherwise perceive a reduction in the performance of the device.
Summary of Invention
According to a first aspect of the invention, there is provided a data processing apparatus comprising a processing element, a source or sink of data and a data buffer for transferring data between the processing element and the source or sink, the data processing apparatus further comprising a buffer monitor for monitoring the condition of the data buffer and adjusting the operating speed of the processing element according to the condition of the data buffer.
By monitoring the condition of the data buffer, underperformance of the processing element can readily be detected, and the operating speed of the processor can be increased, thus ensuring that a user of the apparatus does not perceive a reduction in the performance of the apparatus. Similarly, if the processing element is needlessly over-performing, because the operating speed of the processing element is higher than necessary for the particular operation or application being performed, this can readily be detected and the operating speed of the processing element can be reduced as appropriate. In this way, the operating speed of the processing element can be increased when it is necessary to achieve or maintain an acceptable level of perceived performance, and can be reduced when appropriate to reduce power consumption and thus increase usable battery life.
Adjusting the operating speed of the processing element may comprise activating a mode of the processing element in which the operating speed is increased.
The buffer monitor may compare the condition of the data buffer to an activation threshold.
The buffer monitor may compare the condition of the data buffer to a deactivation threshold.
A plurality of data buffers may be provided for transferring data between the source or sink and the processing element.
The buffer monitor may compare the number of full data buffers to an activation threshold.
The buffer monitor may compare the number of full data buffers to a deactivation threshold.
The use of a plurality of data buffers simplifies monitoring, as the number of individual data buffers that are full can be monitored and compared to the activation andlor deactivation thresholds, rather than monitoring the condition (e.g. the amount of memory occupied) of a single data buffer. Additionally, the use of a plurality of data buffers enables the processing element to operate on one data buffer whilst the source or sink operates on a different buffer, thus ensuring isolation between the source or sink and the processing element, which minimises the risk of distortion of the data caused by processing the data in an incorrect order.
Preferably, the activation threshold and the deactivation threshold are different.
The activation threshold may be greater than the deactivation threshold.
Preferably, when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
The source or sink of data may comprise a real-time element.
According to a second aspect of the invention, there is provided a mobile communications device comprising an apparatus according to any one of the preceding paragraphs.
According to a third aspect of the invention, there is provided a method of controlling the operating speed of a processing element in a data processing system, the method comprising monitoring the condition of a data buffer of the system that is provided for transferring data between a source or sink of data of the system and the processing element and adjusting the speed of the processing element in accordance with the condition of the data buffer.
Adjusting the operating speed of the processing element may comprise activating a mode of the processing element in which the operating speed is increased.
Monitoring the condition of the data buffer may comprise comparing the condition of the data buffer to an activation threshold.
Monitoring the condition of the data buffer may comprise comparing the condition of the data buffer to a deactivation threshold.
A plurality of data buffers may be provided for transferring data between the source or sink and the processing element.
Monitoring the condition of the data buffers may comprise comparing the number of full data buffers to an activation threshold.
Monitoring the condition of the data buffers may comprise comparing the number of full data buffers to a deactivation threshold.
Preferably, the activation threshold and the deactivation threshold are different.
The activation threshold may be greater than the deactivation threshold.
Preferably, when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
The source or sink of data may comprise a real-time element.
According to a fourth aspect of the invention, there is provided a program for causing processing means to perform the method of any one of the preceding paragraphs.
Brief Description of the Drawings
Embodiments of the invention will now be described, strictly by way of example only, with reference to the accompanying drawings, of which: Figure 1 is a schematic diagram showing functional blocks of a typical "smart phone"; Figure 2 is a schematic diagram illustrating a simple prior art media processing system; Figure 3 is a schematic diagram showing functional blocks of a data processing apparatus according to one embodiment of the invention that are used in an audio recording operation; Figure 4 is a flow diagram showing steps involved in the audio recording operation illustrated in Figure 3; Figure 5 is a schematic diagram showing functional blocks of a data processing apparatus according to one embodiment of the invention that are used in an audio playback operation; Figure 6 is a schematic flow diagram showing steps involved in the audio playback operation illustrated in Figure 4; and Figure 7 is a schematic diagram showing functional blocks of a data processing apparatus according to an alternative embodiment of the invention that are used in an audio playback operation;
Description of the Embodiments
Referring first to Figure 1, a mobile communications device, in this case a smart phone, is shown generally at 10. As described above, the smart phone 10 includes RF processing hardware 12, baseband processing hardware 14 and power regulating hardware 16 for handling telecommunications operations. These hardware features are listed here for the sake of completeness, but are not directly relevant to the embodiments of the invention described below.
An application processor 18 is provided for handling the operation of application software running on the smart phone 10, such as a media player, web browser, organiser, games and the like, as well as an operating system of the smart phone 10. The application processor 18 has a so-called "turbo mode", meaning that it can be accelerated by increasing its clock speed, enabling it to perform more instructions in a given time period. Activating the turbo mode requires an increase in a supply voltage to the application processor 18, and thus entails an increase in its power consumption, and hence the power consumption of the smart phone as a whole.
The smart phone 10 also includes a read only memory (ROM) 22, in which an operating system and associated graphical user interface of the smart phone 10 are stored. A random access memory (RAM) 24 is also provided, for running application software such as an electronic organiser, media player and the like. A user data memory 26 is also provided for storing user data such as contact lists, text messages, emails and the like.
Reference will now be made to Figure 2, to describe the operation of a known simple media processing system. The media processing system is shown generally at 30, and comprises a data source 32, a data sink 34, a processing element 36, data buffers 38, 40 for transferring data between the source 32 and the processing element 36 and data buffers 42, 44 for transferring data between the processing element 36 and the sink 34. The source 32 and the sink 34 are typically real-time elements, in that they continuously produce or consume data.
In an audio processing system, for example, the source 32 may be a microphone, and the sink 34 may be a loudspeaker, whilst the processing element 36 may be a filter, codec, mixer or the like.
Two data buffers 38, 40 (identified as Buffer 0 and Buffer 1 respectively) are used to transfer data between the source 32 and the processing element 36, so that data contained in one of the buffers can be processed whilst the other buffer is being filled by the source 32. Similarly, two data buffers 42, 44 (again identified as Buffer 0 and Buffer 1 respectively) are used to transfer data between the processing element 36 and the sink 34, so that the sink 34 can empty one buffer whilst the processing element 36 is filling the other.
In use of the system 30, the source 32 generates data, fbr example a sequence of samples representing the speech of a user of the system 30. This data is passed initially to the buffer 38 (Buffer 0), for processing by the processing element 36 in accordance with the media operation being performed, for example filtering. As the data in the buffer 38 is processed, the buffer 40 is filled with data generated by the source 32. Once the buffer 38 has been emptied by the processing element 36, processing of the data in the buffer 40 commences, whilst the buffer 38 is filled with data generated by the source 32.
On the sink side of the system 30, processed data is transferred initially from the processing element 36 to the buffer 42, from where it is transferred to the sink 34, which may be a loudspeaker, for example. As the sink 34 extracts the data from the buffer 42, the processing element 36 fills the buffer 44 with processed data, and when the buffer 42 is empty, the sink 34 begins extracting data from the buffer 44 whilst the processing element 36 re-fills the buffer 42 with processed data. This process repeats until the media operation is completed.
As is explained above, accurate performance of a media operation relies upon isochronous processing of data by the processing element 36, and this can be impeded if the processing element 36 is required to perform additional tasks such as running another application, as the processing resources of the processing element 36 are divided between the media operation and the other application. Where isochronous processing of data by the processing element 36 is lost, distortion is introduced during processing. For example, with a microphone as the source 32, loss of isochronous data processing will result in overflow of the data buffers 38, 40, such that data will be lost, whilst if the sink 34 is a loudspeaker, loss of isochronous processing will result in underfiow of the data buffers 42, 44, causing audible pops, clicks and periods of silence.
The present invention addresses this problem by monitoring the condition of a data buffer used for transferring data between a source or sink of data and a processing element, such as the application processor 18 of a smart phone 10, and adjusting the operating speed of the processing element in accordance with the condition of the data buffer, providing additional processing resources when necessary to prevent any overflow or underfiow of the data buffer.
Figure 3 is a schematic representation of a data processing apparatus, shown generally at 50, which may be comprised of functional elements of a device such as the smart phone 10 illustrated in Figure 1. In this example, the data processing apparatus 50 is configured to perform an audio recording operation.
The apparatus 50 comprises a microphone 52 and an associated microphone driver 54 for converting an analogue signal from the microphone 52 into digital samples. A plurality (for example 20) of data buffers 56, 58, 60, 62 are provided for transferring data between the microphone driver 54 and a processing element 64, such as the application processor 18 of the smart phone 10 illustrated in Figure 1. The data buffers 56, 58, 60, 62 are typically allocated from the available RAM 24 of the smart phone 10 prior to the commencement of the recording operation. In this example, the processing element 64 is configured as an encoder (i.e. the application processor 18 is running an appropriate software application) for converting samples generated by the microphone driver 54 into a digital audio file 66 such as an mp3 file. A buffer monitor 68 is provided for monitoring the condition of the data buffers 56, 58, 60, 62 and controlling the operating speed of the processing element 64 accordingly.
The operation of the data processing apparatus 50 during an audio recording operation is outlined in the flow chart of Figure 4. The audio recording operation commences at step 70, which instigates sampling by the microphone driver 54 of an audio signal generated by the microphone 52, at step 72. For CD quality audio, a sampling rate of 44.lkl-Iz must be used, with each sample comprising 16 bits of data.
A sample produced by the microphone driver 54 is stored, at step 74, in the next available data buffer 56, 58, 60, 62. On commencement of an audio recording operation, the data buffers 56, 58, 60, 62 are typically empty, and thus samples are typically stored in the buffer 56 (buffer 0), where they can be directly accessed by the processing element 64 for immediate processing. However, as the recording operation proceeds, more samples are generated and may need to be stored in the other buffers 58, 60, 62, depending upon the rate at which the stored samples are processed by the processing element 64. Thus, a check is made at step 76 to determine whether the "current" data buffer 56, 58, 60, 62 (i.e. the data buffer 56, 58, 60, 62 in which the last sample was stored) is full, and if this check returns a positive result, that data buffer 56, 58, 60, 62 is marked as full, to indicate that it is not available, thus ensuring that no samples are lost by trying to store them in a full data buffer 56, 58, 60, 62. If the check performed at step 76 returns a negative result, no further action is taken, and the next sample generated by the microphone driver can be stored in the current data buffer 56, 58, 60, 62.
As the data buffers 56, 58, 60, 62 are being filled with samples generated by the microphone driver 54, the processing element 64 extracts data from the data buffers 56, 58, 60, 62 and processes it to generate an audio file 66. Data is extracted from those data buffers 56, 58 60, 62 that are marked as full, whilst the microphone driver fills those of the buffers 56, 58, 60, 62 that are not marked as full. In this way, the microphone driver 54 and the processing element 64 are isolated from one another, thus ensuring that the processing element 54 is only able to process data in the correct order, which minimises the likelihood of distortion caused by incorrect ordering of processed data.
At the start of the recording operation the processing element 64 extracts data from the data buffer 56 (buffer 0), and when all the data has been extracted from this data buffer 56, the processing element 64 marks the data buffer 56 as empty, to enable samples generated by the microphone driver 54 to be stored in that data buffer 54 again. The processing element 64 then extracts and processes data from the next data buffer 56, 58, 60, 62 marked as full, again marking the selected data buffer 56, 58, 60, 62 as empty when all of the data has been extracted and processed. This continues until the recording operation has been completed.
In normal, unimpeded operation of the apparatus 50 (e.g. when only a single audio recording operation is being performed), the processing element 64 typically only extracts data from the buffers 56 and 58 (buffers 0 and 1), as the rate of operation of the processing element 64 is equal to or greater than the rate at which the microphone driver 54 generates samples, and thus only these two buffers are required, with one being filled with fresh samples as the processing element 64 is extracting and processing the data contained in the other. However, if another application is being run on the application processor 18 simultaneously, there may be insufficient processing resources for the processing element 64 to process all of the samples in one of the data buffers 56, 58, 60, 62 before another of the data buffers 56, 58, 60, 62 has been filled with samples generated by the microphone driver 54, and thus other data buffers 56, 58, 60, 62 must be used to store the samples. If this situation persists, a backlog of unprocessed data builds up in the data buffers 56, 58, 60, 62.
The buffer monitor 68 continuously monitors the condition of the data buffers 56, 58, 60, 62, and performs a check (at step 80) each time a data buffer 56, 58, 60, 62 is marked as full to determine whether the number of data buffers 56, 58, 60, 62 that are in a predetermined condition betters a threshold. In this example, the monitoring means 68 compares the number of data buffers 56, 58, 60, 62 that are marked as full to a predetermined threshold, but it will be appreciated that other checks of the condition of the data buffers 56, 58, 60, 62 are possible. The use of a plurality of data buffers 56, 58, 60, 62 simplifies this monitoring, as the buffer monitor 68 is only required to count the number of buffers 56, 58, 60, 62 that are marked as full.
A large number of data buffers 56, 58, 60, 62 being marked as full is indicative of slow processing of the samples by the processing element 64. Thus, if the check performed at step returns a positive result, indicating that the number of data buffers 56, 58, 60, 62 which are marked as full exceeds an activation threshold, which in this exemplary embodiment is five, the buffer monitor 68 activates the turbo mode of the application processor 18 to increase the number of instructions that can be carried out by the application processor 18 per second, and thus the rate at which the samples stored in the buffers 56, 58, 60, 62 are processed. Activation of the turbo mode of the application processor 18 typically increases
II
this data processing rate to a level above the rate at which the samples are generated by the microphone driver 54, so that the backlog of samples stored in the buffers 56, 58, 60, 62 can be reduced.
If the check performed at step 80 returns a negative result, indicating that the number of buffers 56, 58, 60, 62 which are marked as full does not exceed the activation threshold, a further check is made at step 84 to determine whether the turbo mode of the application processor 18 has been activated. This step is required because each time a buffer 56, 58, 60, 62 is emptied by the processing element 64 (as described in detail below), that buffer 56, 58, 60, 62 is marked as empty, thus reducing the number of data buffers 56, 58, 60, 62 marked as full. It is therefore possible for the turbo mode to remain activated after the number of data buffers 56, 58, 60, 62 has dropped below the activation threshold, if it has not been deactivated, as described below.
If the turbo mode is activated, a check is performed at step 86 to determine whether the number of data buffers 56, 58, 60, 62 marked as full has dropped below a deactivation threshold. If so, the turbo mode of the application processor 18 is deactivated, causing the application processor 18 to operate at its normal speed, thus reducing its power consumption.
The deactivation threshold may be equal to the activation threshold, so that the turbo mode is deactivated as soon as the number of data buffers 56, 58, 60, 62 marked as full has dropped below the application threshold. Alternatively, the deactivation threshold may be smaller than the activation threshold, to allow a larger amount of data to be processed before the turbo mode is deactivated, thus reducing the amount of unprocessed data in the buffers 56, 58, 60, 62. In this exemplary embodiment, the deactivation threshold is two, but it will be appreciated that a number of different factors will be taken into account when determining both the activation threshold and the deactivation threshold, for example the particular operation being carried out, the number and size of the data buffers 56, 58, 60, 62 and the type of data contained within the data buffers 56, 58, 60, 62.
By monitoring the condition of the data buffers 56, 58, 60, 62 and adjusting the speed of the application processor 18 in this way, accurate audio recording can be achieved without any loss of data.
Turning now to Figure 5, there is shown, in schematic form, a data processing apparatus 90 configured for playback of an audio file. As before, the apparatus 90 may be comprised of functional elements of a device such as the smart phone 10 shown in Figure 1.
The apparatus comprises a processing element 92, such as the application processor 18 of the smart phone 10 shown in Figure 1, for processing an audio file 94 to convert it into data that can be used by a speaker driver 96 to cause a loudspeaker 98 to generate an audio signal. A plurality of data buffers 100, 102, 104, 106 are provided for transferring data between the processing element 92 and the speaker driver 96,and these data buffers 100, 102, 104, 106 are typically allocated from the available RAM of the smart phone 10 or other device prior to commencement of the audio playback operation. A buffer monitor 108 is provided for monitoring the condition of the data buffers 100, 102, 104, 106 and controlling the operating speed of the processing element 92 accordingly.
The operation of the data processing apparatus 90 during an audio playback operation is outlined in the flow diagram of Figure 6. On commencement of an audio playback operation at step 110, the data buffers 100, 102, 104, 106 are full of data retrieved from the audio file 94 and processed by the processing element 92, and are marked as being full. The speaker driver 96 extracts data from the first available non-empty data buffer 100, 102, 104, 106 and converts it to an audio signal which can be passed to the loudspeaker 98. A check is made at step 114 to determine whether the current data buffer 100, 102, 104, 106 (i.e. the data buffer from which data has been extracted) is empty. If this check returns a negative result, extraction of data can continue, until the current data buffer 102, 104, 106, 108 is empty. If this check returns a positive result, the current buffer is marked as empty (at step 116).
As the speaker driver 96 is extracting data from the data buffers 100, 102, 104, 106, the processing element 92 refills the data buffers 100, 102, 104, 106 with data that has been retrieved from the audio file 94 and processed, marking each of the data buffers 100, 102, 104, 106 as being full once they have been refilled. In normal, unimpaired operation of the processing element (e.g. when only a single audio playback operation is being performed), the processing element 92 operates at a speed equal to or greater than the speed at which the speaker driver 96 is able to extract data from the data buffers 100, 102, 104, 106, and thus there is always sufficient data available in the data buffers 100, 102, 104, 106 for an undistorted audio signal to be produced. However, if another application is being run on the application processor 18 simultaneously, there may be insufficient processing resources to allow the processing element 92 to operate at this speed, and if this occurs there may not be sufficient data in the data buffers 100, 102, 104, 106 for the speaker driver 96 to generate an undistorted audio signal.
The buffer monitor 108 continuously monitors the condition of the data buffers 100, 102, 104, 106 and performs a check, at step 118, to determine whether the number of data buffers 100, 102, 104, 106 that are in a predetermined condition betters a predetermined threshold. In this example the monitoring means 108 compares the number of data buffers 100, 102, 104, 106 that are marked as full (or alternatively the number of data buffers 100, 102, 104, 106 that are marked as empty) to a predetermined threshold, but it will be appreciated that other checks of the condition of the data buffers 100, 102, 104, 106 are possible. If the result of the check carried out at step 118 by the monitoring means 108 is positive, indicating that the number of data buffers 100, 102, 104, 106 that are marked as full has fallen to a predetermined activation threshold, the operating speed of the processing element 92 is increased, by activating the turbo mode of the application processor 1 8.
Activating the turbo mode of the application processor 18 in this way increases the rate at which the processing element 92 processes data from the audio file 94, thus increasing the rate at which the data buffers 100, 102, 104, 106 are filled with data. Typically, activating the turbo mode of the processor 18 increases the data processing rate of the processing element 92 to a level above the rate at which data is extracted from the buffers 100, 102, 104, 106 by the speaker driver 96, so that a large reserve of data can be built up in the buffers 100, 102, 104, 106, to ensure that sufficient data is available to generate an undistorted audio signal.
If the check carried out at step 118 returns a negative result, a check is carried out at step 122 to determine whether the turbo mode of the application processor 18 has been activated. If this check returns a negative result, the audio playback operation simply continues, returning to step 112. However, if this check returns a positive result, a check is made at step 124 to determine whether the number of data buffers 100, 102, 104, 106 has reached a deactivation threshold. If so, the turbo mode of the application processor 18 is deactivated, causing the application processor 1 8 to operate at its normal speed, thus reducing its power consumption.
The deactivation threshold may be equal to the activation threshold, so that the turbo mode is deactivated as soon as the number of data buffers 100, 102, 104, 106 marked as full has risen to the application threshold. Alternatively, the deactivation threshold may be larger than the activation threshold, to allow a larger amount of data to be processed before the turbo mode is deactivated, thus increasing the amount of data stored in the buffers 100, 102, 104, 106.
For example, the activation threshold may be two, and the deactivation threshold may be five, but it will be appreciated that a number of different factors will be taken into account when determining both the activation threshold and the deactivation threshold, for example the particular operation being carried out, the number and size of the data buffers 100, 102, 104, 106 and the type of data contained within the data buffers 100, 102, 104, 106.
In the examples described above, the data buffers 56, 58, 60, 62 and 100, 102, 104, 106 are dynamically allocated only to the "source" and "sink" sides respectively of a data processing system prior to commencement of a media operation. The data buffers 56, 58, 60, 62 and 100, 102, 104, 106 are typically allocated from the RAM 24 of a device such as the smart phone shown in Figure 1. If a more complex application such as video telephony is running on a device, additional data buffers are required on both sides of the data processing system, as both recording and playback operations are being performed. The required buffers are again allocated from the RAM 24 of the device prior to commencement of the application.
It should be noted that the additional data buffers used in the embodiments described above do not necessarily require more memory than known systems, but instead may allocate the memory differently. Thus, for example, in a known system, such as the one shown in Figure 2, the "source" and "sink" sides of the system may each have two data buffers 38, 40 and 42, 44, which may each be 5 kilobytes (KB), whereas in a system according to the present invention twenty data buffers 56, 58, 60, 62 may be provided, each of 0.5 KB, for example.
The embodiments described above in relation to Figures 3 and 5 use a plurality of individual small data buffers for transferring data between the source or sink and the processing element. However, the invention can equally be implemented using a single larger data buffer, such as a "first in first out" (FIFO) buffer. An exemplary embodiment of an audio recording apparatus in which a single data buffer is used is shown generally at 130 in Figure 7. In this example, a microphone 132 and an associated microphone driver 134 convert an analogue audio signal into digital samples, which are converted by a processing element 140, such as the application processor 18 of the smart phone 10 illustrated in Figure 1, into an audio file such as an mp3 file. A single FIFO data buffer 136 is provided for transferring data between the microphone driver 134 and the processing element 140, whilst a buffer monitor 138 is provided for monitoring the condition of the data buffer 136 and controlling the operating speed of the processing element 140 accordingly.
The operation of the data processing apparatus 130 is similar to the operation of the apparatus shown in Figure 3, with the microphone driver filling the data buffer 136 as the processing element 140 extracts data from it. As the data buffer 136 is a FIFO buffer, data is processed by the processing element 140 in the order in which it enters the data buffer 136, thus minimising the risk of distortion caused by processing the data "out of turn". The buffer monitor 138 evaluates the amount of memory of the data buffer 136 that is occupied by data (rather than counting the number of individual data buffers that are marked as full), and compares this to an activation threshold to determine whether the turbo mode of the application processor 18 is to be activated. If the amount of occupied memory of the data buffer 136 exceeds the activation threshold, the turbo mode of the application processor 18 is activated, thus increasing the number of instructions executed per second, to enable the application processor 18 to process the data stored in the data buffer 136 more quickly.
Similarly, when the turbo mode of the application processor 18 is activated, the buffer monitor 138 compares the amount of memory of the data buffer 136 that is occupied by data to a deactivation threshold to determine whether the turbo mode of the application processor 18 should be deactivated. The activation threshold and the deactivation threshold may each be a percentage of the total capacity of the data buffer 138, and the activation threshold and the deactivation threshold may be the same, such that the turbo mode is deactivated as soon as the amount of occupied memory of the data buffer 136 has dropped below the application threshold. However, it may be preferable for the deactivation threshold to be lower than the application threshold, to allow a larger amount of data to be processed before the turbo mode is deactivated, thus reducing the amount of unprocessed data stored in the data buffer 136.
For example, the activation threshold may be 60 per cent of the total capacity of the data buffer 136, whilst the deactivation threshold may be 20 per cent of the total capacity of the data buffer, although a number of factors will be taken into account in determining both the activation threshold and the deactivation threshold, for example the size of the data buffer 136, the particular operation being carried out and the type of data contained in the data buffer 136.
Although the examples described above relate to increasing selectively the operating speed of the application processor 18 of a device such as the smart phone 10 of Figure 1 in accordance with the condition of one or more data buffers, it will be appreciated that the operating speed of the application processor 18 may also be reduced, in certain circumstances. For example, in an audio playback operation, it may be detected that the processing element 92 is able to perform the required processing of the data from the audio file 94 at a much higher rate than the speaker driver 96 is able to extract the processed data from the data buffers 100, 102, 104, 106, and thus the processing element 92 is idle for much of the time. In this case, the operating speed of the application processor 18 can be reduced, so that the processing element 92 operates at substantially the same speed as the speaker driver 96. This reduction in the operating speed of the application processor 18 is accompanied by a reduction in the required supply voltage, and thus a reduction in power consumption.
The examples presented above describe the invention in terms of functional elements, which may be hardware elements, but it will be clear to those skilled in the relevant art that the invention can be implemented as a software application provided as a set of instructions for execution by an appropriate processor.
The above embodiments have been described in relation to a mobile telecommunications device such as a smart phone or the like, but it will be appreciated that the embodiments and the invention may find application in any other device which uses a processor whose operating speed can be changed, by activating a turbo mode or similar, and are particularly suited to devices which are intended to perform media operations, for example portable media players such as MP3 or MP4 players, personal computers, DVD players and the like.
The invention is also particularly suitable for data processing applications where a particular level of performance, in terms of processing speed, is required, for example in networking applications where the invention could be employed to monitor incoming data to ensure that it is being processed as quickly as possible.

Claims (26)

  1. Claims I. A data processing apparatus comprising a processing element, a source or sink of data and a data buffer for transferring data between the processing element and the source or sink, the data processing apparatus further comprising a buffer monitor for monitoring the condition of the data buffer and adjusting the operating speed of the processing element according to the condition of the data buffer.
  2. 2. A data processing apparatus according to claim I wherein adjusting the operating speed of the processing element comprises activating a mode of the processing element in which the operating speed is increased.
  3. 3. A data processing apparatus according to claim 1 or claim 2 wherein the buffer monitor compares the condition of the data buffer to an activation threshold.
  4. 4. A data processing apparatus according to any one of the preceding claims wherein the buffer monitor compares the condition of the data buffer to a deactivation threshold.
  5. 5. A data processing apparatus according to claim 1 or claim 2 wherein a plurality of data buffers are provided for transferring data between the source or sink and the processing element.
  6. 6. A data processing apparatus according to claim 5 wherein the buffer monitor compares the number of full data buffers to an activation threshold.
  7. 7. A data processing apparatus according to claim 5 or claim 6 wherein the buffer monitor compares the number of full data buffers to a deactivation threshold.
  8. 8. A data processing apparatus according to claim 4 or claim 7 wherein the activation threshold and the deactivation threshold are different.
  9. 9. A data processing apparatus according to claim 8 wherein the activation threshold is greater than the deactivation threshold.
  10. 10. A data processing apparatus according to any one of the preceding claims wherein when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
  11. 11. A data processing apparatus according to any one of the preceding claims wherein the source or sink of data comprises a real-time element.
  12. 12. An apparatus substantially as hereinbefore described with reference to the accompanying drawings.
  13. 13. A mobile communications device comprising an apparatus according to any one of the preceding claims.
  14. 14. A method of controlling the operating speed of a processing element in a data processing system, the method comprising monitoring the condition of a data buffer of the system that is provided for transferring data between a source or sink of data of the system and the processing element and adjusting the speed of the processing element in accordance with the condition of the data buffer.
  15. 15. A method according to claim 14 wherein adjusting the operating speed of the processing element comprises activating a mode of the processing element in which the operating speed is increased.
  16. 16. A method according to claim 14 or claim 15 wherein monitoring the condition of the data buffer comprises comparing the condition of the data buffer to an activation threshold.
  17. 17. A method according to any one of claims 14 to 16 wherein monitoring the condition of the data buffer comprises comparing the condition of the data buffer to a deactivation threshold.
  18. 18. A method according to any one of claims 14 to 17 wherein a plurality of data buffers are provided for transferring data between the source or sink and the processing element.
  19. 19. A method according to claim 18 wherein monitoring the condition of the data buffers comprises comparing the number of full data buffers to an activation threshold.
  20. 20. A method according to claim 18 or claim 19 wherein monitoring the condition of the data buffers comprises comparing the number of full data buffers to a deactivation threshold.
  21. 21. A method according to claim 17 or claim 20 wherein the activation threshold and the deactivation threshold are different.
  22. 22. A method according to claim 21 wherein the activation threshold is greater than the deactivation threshold.
  23. 23. A method according to any one of claims 14 to 22 wherein when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
  24. 24. A method according to any one of claims 14 to 23 wherein the source or sink of data comprises a real-time element.
  25. 25. A method substantially as hereinbefore described with reference to the accompanying drawings.
  26. 26. A program for causing processing means to perform the method of any one of claims 14 to 25.
    26. A program for causing processing means to perform the method of any one of claims 14 to 25.
    Claims I. A data processing apparatus comprising a processing element, a source or sink of data and a data buffer for transferring data between the processing element and the source or sink, the data processing apparatus further comprising a buffer monitor for monitoring the condition of the data buffer and adjusting the operating speed of the processing element according to the condition of the data buffer.
    2. A data processing apparatus according to claim I wherein adjusting the operating speed of the processing element comprises activating a mode of the processing element in which the operating speed is increased.
    3. A data processing apparatus according to claim 1 or claim 2 wherein the buffer monitor compares the condition of the data buffer to an activation threshold.
    4. A data processing apparatus according to any one of the preceding claims wherein the buffer monitor compares the condition of the data buffer to a deactivation threshold.
    5. A data processing apparatus according to claim 1 or claim 2 wherein a plurality of data buffers are provided for transferring data between the source or sink and the processing element.
    6. A data processing apparatus according to claim 5 wherein the buffer monitor compares the number of full data buffers to an activation threshold.
    7. A data processing apparatus according to claim 5 or claim 6 wherein the buffer monitor compares the number of full data buffers to a deactivation threshold.
    8. A data processing apparatus according to claim 4 or claim 7 wherein the activation threshold and the deactivation threshold are different.
    9. A data processing apparatus according to claim 8 wherein the activation threshold is greater than the deactivation threshold.
    10. A data processing apparatus according to any one of the preceding claims wherein when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
    11. A data processing apparatus according to any one of the preceding claims wherein the source or sink of data comprises a real-time element.
    12. An apparatus substantially as hereinbefore described with reference to the accompanying drawings.
    13. A mobile communications device comprising an apparatus according to any one of the preceding claims.
    14. A method of controlling the operating speed of a processing element in a data processing system, the method comprising monitoring the condition of a data buffer of the system that is provided for transferring data between a source or sink of data of the system and the processing element and adjusting the speed of the processing element in accordance with the condition of the data buffer.
    15. A method according to claim 14 wherein adjusting the operating speed of the processing element comprises activating a mode of the processing element in which the operating speed is increased.
    16. A method according to claim 14 or claim 15 wherein monitoring the condition of the data buffer comprises comparing the condition of the data buffer to an activation threshold.
    17. A method according to any one of claims 14 to 16 wherein monitoring the condition of the data buffer comprises comparing the condition of the data buffer to a deactivation threshold.
    18. A method according to any one of claims 14 to 17 wherein a plurality of data buffers are provided for transferring data between the source or sink and the processing element.
    19. A method according to claim 18 wherein monitoring the condition of the data buffers comprises comparing the number of full data buffers to an activation threshold.
    20. A method according to claim 18 or claim 19 wherein monitoring the condition of the data buffers comprises comparing the number of full data buffers to a deactivation threshold.
    21. A method according to claim 17 or claim 20 wherein the activation threshold and the deactivation threshold are different.
    22. A method according to claim 21 wherein the activation threshold is greater than the deactivation threshold.
    23. A method according to any one of claims 14 to 22 wherein when the mode in which the operating speed of the processing element is increased has been activated, the processing element operates at a higher speed than the source or sink of data.
    24. A method according to any one of claims 14 to 23 wherein the source or sink of data comprises a real-time element.
    25. A method substantially as hereinbefore described with reference to the accompanying drawings.
GB0723981A 2007-12-07 2007-12-07 Controlling the speed of a processing element based on the fullness level of a buffer Withdrawn GB2455354A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
GB0723981A GB2455354A (en) 2007-12-07 2007-12-07 Controlling the speed of a processing element based on the fullness level of a buffer
PCT/GB2008/003998 WO2009071887A1 (en) 2007-12-07 2008-12-03 Controlling the operating speed of a processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0723981A GB2455354A (en) 2007-12-07 2007-12-07 Controlling the speed of a processing element based on the fullness level of a buffer

Publications (2)

Publication Number Publication Date
GB0723981D0 GB0723981D0 (en) 2008-01-16
GB2455354A true GB2455354A (en) 2009-06-10

Family

ID=38983142

Family Applications (1)

Application Number Title Priority Date Filing Date
GB0723981A Withdrawn GB2455354A (en) 2007-12-07 2007-12-07 Controlling the speed of a processing element based on the fullness level of a buffer

Country Status (2)

Country Link
GB (1) GB2455354A (en)
WO (1) WO2009071887A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011038214A1 (en) * 2009-09-24 2011-03-31 Qualcomm Incorporated Apparatus and methods for optimizing power consumption in a wireless device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104155661B (en) * 2013-05-15 2016-12-28 安凯(广州)微电子技术有限公司 The control method of a kind of GNSS receiver, device and system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004059996B4 (en) * 2004-12-13 2006-10-05 Infineon Technologies Ag Method and apparatus for adjusting the clock frequency of a processor
US7480586B2 (en) * 2005-11-29 2009-01-20 International Business Machines Corporation Thermal interrupt generation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011038214A1 (en) * 2009-09-24 2011-03-31 Qualcomm Incorporated Apparatus and methods for optimizing power consumption in a wireless device
CN102549523A (en) * 2009-09-24 2012-07-04 高通股份有限公司 Apparatus and methods for optimizing power consumption in a wireless device
US9195296B2 (en) 2009-09-24 2015-11-24 Qualcomm Incorporated Apparatus and methods for optimizing power consumption in a wireless device
CN102549523B (en) * 2009-09-24 2016-01-20 高通股份有限公司 For optimizing the apparatus and method of the power consumption of wireless device

Also Published As

Publication number Publication date
GB0723981D0 (en) 2008-01-16
WO2009071887A1 (en) 2009-06-11

Similar Documents

Publication Publication Date Title
US8001400B2 (en) Power consumption management for functional preservation in a battery-powered electronic device
EP1949203B1 (en) Using historic load profiles to dynamically adjust operating frequency and available power to a handheld multimedia device processor core
JP5628429B2 (en) Method and apparatus for monitoring interrupts during a power down event in a processor
US7778838B2 (en) Apparatus, system and method for buffering audio data to allow low power states in a processing system during audio playback
US20070061600A1 (en) Data processing apparatus, program, recording medium, and content playback apparatus
WO2021057665A1 (en) Data storage method and apparatus, mobile terminal, and storage medium
US9632562B2 (en) Systems and methods for reducing volatile memory standby power in a portable computing device
CN103220392B (en) A kind of method of automatic recording, device and mobile terminal
EP4239477A1 (en) Virtual memory management method and electronic device
CN110764906A (en) Memory recovery processing method and device, electronic equipment and storage medium
US9654624B2 (en) Method, device and mobile terminal for automatic recording
CN110876180A (en) Power consumption processing method and device, electronic equipment and computer readable medium
US9524014B2 (en) Media playback power management devices and methods
GB2455354A (en) Controlling the speed of a processing element based on the fullness level of a buffer
US20070060135A1 (en) Method and device for streaming wireless digital content
KR101521780B1 (en) Continuous data delivery with energy conservation
US9378750B2 (en) Apparatus and method of reproducing audio data using low power
US8301283B2 (en) Method for outputting audio-visual media contents on a mobile electronic device, and mobile electronic device
CN113485969A (en) Storage fragmentation method and device, terminal and computer storage medium
US8090970B2 (en) Apparatus and method for playing multimedia data
EP1826994A2 (en) Apparatus and method for controlling bell sound in portable terminal having hard disc drive
CN113722245B (en) Buffer self-adaptive adjustment method, device, equipment and storage medium
CN114443240B (en) Input/output request processing method and electronic equipment
TW200622574A (en) Method and circuit for buffering a stream of data
JP2007019884A (en) Method of dc download for wireless digital content and its device

Legal Events

Date Code Title Description
COOA Change in applicant's name or ownership of the application

Owner name: NOKIA CORPORATION

Free format text: FORMER OWNER: SYMBIAN SOFTWARE LIMITED

WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)