I. Field of the Disclosure
The technology of the disclosure relates generally to data transmissions in communication devices.
II. Background
Mobile communication devices have become increasingly common in current society. The prevalence of these mobile communication devices is driven in part by the many functions that are now enabled on such devices. Demand for such functions increases the processing capability requirements for the mobile communication devices. As a result, the mobile communication devices have become sophisticated mobile entertainment centers capable of processing a variety of data streams (e.g., voice, audio, videos, images, texts, etc.) simultaneously.
Although the mobile communication devices are capable of processing the variety of data streams simultaneously, the task of outputting the variety of data streams to one or more client devices in real time is more challenging. First of all, there is a limited bandwidth in available communications media (e.g., wireless spectrum) that must be shared by the variety of data streams. In addition, traffic patterns (e.g., constant bit rate versus variable bit rate, bursty versus sporadic, and so on) associated with the variety of data streams are unpredictable, making it difficult for even the most sophisticated traffic scheduler to work efficiently. Furthermore, the many features the mobile communication devices commonly support must be done under an increasingly stringent power consumption budget.
Data queuing is a commonly utilized mechanism in mobile communication devices to help organize and schedule the variety of data streams into output queues based on such factors as originations, destinations, and quality of service (QoS) priorities prior to transmitting data to the one or more client devices. In this regard, it is desirable to optimize the output queues to achieve higher efficiency, throughput, and data integrity with lower power consumption.
Aspects disclosed in the detailed description include head-of-line blocking (HOLB) mitigation in communication devices. Output queues employed by a communication device for transmitting data are susceptible to HOLB. In this regard, in one aspect, a queue monitoring logic is configured to detect HOLB by measuring and comparing a depth(s) of an output queue(s) against a queue-overflow threshold. If the depth(s) of the output queue(s) exceeds the queue-overflow threshold, a queue weight(s) of a corresponding input queue(s) is decreased to reduce data flow into the output queue(s), thus mitigating the HOLB in the output queue(s). In another aspect, the queue monitoring logic is also configured to detect queue depletion by comparing the depth(s) of the output queue(s) against a queue-depletion threshold. If the depth(s) of the output queue(s) falls below the queue-depletion threshold, the queue weight(s) of the corresponding input queue(s) is increased to boost data flow into the output queue(s), thus preventing the data starvation in the output queue(s). By mitigating the HOLB and the data starvation in the output queue(s), it is possible to optimize the output queue(s) to achieve higher throughput and data integrity with lower power consumption.
In this regard, in one aspect, a transmission control logic for mitigating HOLB in a communication device is provided. The transmission control logic comprises a queue monitoring logic communicatively coupled to one or more output queues in a communication device. The transmission control logic also comprises a queue weight determination logic communicatively coupled to one or more input queues configured to provide one or more output data streams to the one or more output queues, respectively. For each of the one or more output queues, the queue monitoring logic is configured to measure a respective queue depth of the output queue. For each of the one or more output queues, the queue monitoring logic is also configured to compare the respective queue depth against a threshold to determine a state of the output queue. For each of the one or more output queues, the queue weight determination logic is configured to adjust a respective output data stream coupled to the output queue in response to the determination of the state of the output queue.
In another aspect, a means for mitigating HOLB in a communication device is provided. The means for mitigating HOLB in a communication device comprises a means for monitoring one or more output queues in a communication device. The means for mitigating HOLB in a communication device also comprises a means for controlling one or more input queues configured to provide one or more output data streams to the one or more output queues, respectively. For each of the one or more output queues, the means for monitoring one or more output queues in a communication device is configured to measure a respective queue depth of the output queue. For each of the one or more output queues, the means for monitoring one or more output queues in a communication device is also configured to compare the respective queue depth against a threshold to determine a state of the output queue. For each of the one or more output queues, the means for controlling one or more input queues is configured to adjust a respective output data stream coupled to the output queue in response to the determination of the state of the output queue.
In another aspect, a method for mitigating HOLB in a communication device is provided. The method comprises measuring a respective queue depth of an output queue among one or more output queues comprised in a communication device. The method also comprises comparing the respective queue depth against a threshold to determine a state of the output queue. The method also comprises adjusting a respective output data stream among one or more output data streams coupled to the output queue in response to the determination of the state of the output queue.
With reference now to the drawing figures, several exemplary aspects of the present disclosure are described. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
Aspects disclosed in the detailed description include head-of-line blocking (HOLB) mitigation in communication devices. Output queues employed by a communication device for transmitting data are susceptible to HOLB. In this regard, in one aspect, a queue monitoring logic is configured to detect HOLB by measuring and comparing a depth(s) of an output queue(s) against a queue-overflow threshold. If the depth(s) of the output queue(s) exceeds the queue-overflow threshold, a queue weight(s) of a corresponding input queue(s) is decreased to reduce data flow into the output queue(s), thus mitigating the HOLB in the output queue(s). In another aspect, the queue monitoring logic is also configured to detect queue depletion by comparing the depth(s) of the output queue(s) against a queue-depletion threshold. If the depth(s) of the output queue(s) falls below the queue-depletion threshold, the queue weight(s) of the corresponding input queue(s) is increased to boost data flow into the output queue(s), thus preventing the data starvation in the output queue(s). By mitigating the HOLB and the data starvation in the output queue(s), it is possible to optimize the output queue(s) to achieve higher throughput and data integrity with lower power consumption.
Before discussing aspects of HOLB mitigation in communication devices that include specific aspects of the present disclosure, a brief overview of a conventional output queue operation is provided in
In this regard,
With reference to
With continuing reference to
In one non-limiting example, the client device 104(2) may be configured to enter periodically a sleep period (not shown) to reduce power consumption. The client device 104(2) is thus unable to receive any data from the output queue 102(2) during the sleep period. As such, the HOL packet 106(2) must be held in the output queue 102(2), causing a HOLB in the output queue 102(2). The input queue 110(2), however, may be unaware of the HOLB in the output queue 102(2) and continue to feed the output data stream 114(2) to the output queue 102(2). Consequently, an overflow will occur in the output queue 102(2) when the queue depth QD2 reaches the capacity C2 and causes subsequent data packets in the output data stream 114(2) to be lost, thus compromising data integrity in the output queue 102(2).
In another non-limiting example, the HOL packet 106(X) is the same packet as the EOL packet 108(X) in the output queue 102(X). As a result, the output queue 102(X) becomes empty after transmitting the HOL packet 106(X) to the client device 104(X). If the input queue 110(X) does not replenish the output queue 102(X) in time, a data starvation will occur and data throughput of the output queue 102(X) is reduced. Hence, it is desirable to detect and mitigate the HOLB and the data starvation in the one or more output queues 102(1)-102(X) to ensure higher data integrity and data throughput.
In this regard,
With reference to
For the convenience of reference, the output queue 102(Y), which refers to any output queue among the one or more output queues 102(1)-102(X), is discussed hereinafter as a non-limiting example. The corresponding queue depth QDY, output data stream 204(Y), input queue 110(Y), and queue weight WY are also referenced herein in association with the output queue 102(Y).
With continuing reference to
If the respective queue depth QDY is greater than the queue-overflow threshold 210, this may be a warning sign of a HOLB in the output queue 102(Y). Thus, if the queue depth QDY is greater than the queue-overflow threshold 210, the queue monitoring logic 208 provides a respective queue-overflow indication 214 to the queue weight determination logic 206. For example, the respective queue depth QD2 of the output queue 102(2) is greater than the respective queue-overflow threshold 210. Therefore, the queue monitoring logic 208 will generate the respective queue-overflow indication 214 for the output queue 102(2). In response to receiving the respective queue-overflow indication 214, the queue weight determination logic 206 decreases the respective output data stream 204(2) coupled to the output queue 102(2) to mitigate the HOLB in the output queue 102(2). As previously discussed, the queue weight determination logic 206 may decrease the respective output data stream 204(2) by decreasing the respective queue weight W2 of the respective input queue 110(2).
If the respective queue depth QDY is less than the queue-depletion threshold 212, this may be a warning sign of a data starvation in the respective output queue 102(Y). Thus, if the queue depth QDY is less than the queue-depletion threshold 212, the queue monitoring logic 208 provides a respective queue-depletion indication 216 to the queue weight determination logic 206. For example, the respective queue depth QDX of the output queue 102(X) is less than the respective queue-depletion threshold 212. As a result, the queue monitoring logic 208 generates the respective queue-depletion indication 216 for the output queue 102(X). In response to receiving the respective queue-depletion indication 216, the queue weight determination logic 206 increases the respective output data stream 204(X) coupled to the output queue 102(X) to prevent data starvation in the output queue 102(X). As previously discussed, the queue weight determination logic 206 may increase the respective output data stream 204(X) by increasing the respective queue weight WX of the respective input queue 110(X).
However, the queue monitoring logic 208 will not generate the respective queue-overflow indication 214 for the output queue 102(X) if the respective queue depth QDX is less than or equal to the queue-overflow threshold 210. Likewise, the queue monitoring logic 208 will not generate the respective queue-depletion indication 216 for the output queue 102(X) if the respective queue depth QDX is greater than or equal to the queue-depletion threshold 212. For example, the queue monitoring logic 208 will not generate the respective queue-overflow indication 214 and the respective queue-depletion indication 216 for the output queue 102(1) because the respective queue depth QD1 is neither greater than the queue-overflow threshold 210 nor less than the queue-depletion threshold 212. The same is true for the output queue 102(3) even though the respective queue depth QD3 is shown as being equal to the queue-overflow threshold 210. Hence, by detecting the HOLBs and the data starvations in the one or more output queues 102(1)-102(X) based on the queue-overflow threshold 210 and the queue-depletion threshold 212, it is possible to adjust timely the one or more output data streams 204(1)-204(X) to mitigate the HOLBs and the data starvations in the output queues 102(1)-102(X).
With continuing reference to
In this regard,
For each of the one or more output queues 102(1)-102(X), the queue monitoring logic 208 first measures the respective queue depth QDY among the one or more queue depths QD1-QDX of the output queue 102(Y) among the one or more output queues 102(1)-102(X) (block 302). The queue monitoring logic 208 then compares the respective queue depth QDY against the queue-overflow threshold 210 and the queue-depletion threshold 212 (block 304). The queue monitoring logic 208 first determines whether the respective queue depth QDY is greater than the queue-overflow threshold 210 (block 306). If the respective queue depth QDY is greater than the queue-overflow threshold 210, the queue monitoring logic 208 increases the queue-overflow counter 218 (block 308). If the respective queue depth QDY is less than or equal to the queue-overflow threshold 210, the queue monitoring logic 208 then determines whether the respective queue depth QDY is less than the queue-depletion threshold 212 (block 310). If the respective queue depth is less than the queue-depletion threshold 212, the queue monitoring logic 208 increases the queue-depletion counter 220 (block 312). The queue monitoring logic 208 then checks whether the predetermined hysteresis value has been reached (block 314). In a non-limiting example, the predetermined hysteresis value may be set as a hysteresis timer whereby the queue monitoring logic 208 generates the respective queue-overflow indication 214 or the respective queue-depletion indication 216 at expiration of the hysteresis timer. In another non-limiting example, the predetermined hysteresis value may be set as a hysteresis counter whereby the queue monitoring logic 208 generates the respective queue-overflow indication 214 or the respective queue-depletion indication 216 when the queue-overflow counter 218 or the queue-depletion counter 220 has the same value as the hysteresis counter. By implementing the predetermined hysteresis value, reliability of the respective queue-overflow indication 214 and the respective queue-depletion indication 216 may be improved.
With continuing reference to
In addition to employing the predetermined hysteresis value in the queue monitoring logic 208, it is also possible to introduce a second level of hysteresis in the queue weight determination logic 206. In this regard,
The queue weight determination logic 400 comprises a first multiplexer (MUX) 402, a second MUX 404, and a queue weight MUX 406. The queue weight determination logic 400 also comprises a first queue weight register 408 and a second queue weight register 410. In a non-limiting example, the one or more input queues 110(1)-110(X) may be initially assigned equal queue weights W1-WX, respectively. In this regard, each of the one or more input queues 110(1)-110(X) has a respective queue weight WY equal to one-over-X (1/X). Accordingly, both the first queue weight register 408 and the second queue weight register 410 have the initial values of 1/X.
With continuing reference to
To illustrate the effectiveness of the transmission control logic 202 in
With reference to
HOLB mitigation in communication devices according to aspects disclosed herein may be provided in or integrated into any processor-based device. Examples, without limitation, include a set top box, an entertainment unit, a navigation device, a communication device, a fixed location data unit, a mobile location data unit, a mobile phone, a cellular phone, a computer, a portable computer, a desktop computer, a personal digital assistant (PDA), a monitor, a computer monitor, a television, a tuner, a radio, a satellite radio, a music player, a digital music player, a portable music player, a digital video player, a video player, a digital video disc (DVD) player, and a portable digital video player.
In this regard,
Other master and slave devices can be connected to the system bus 608. As illustrated in
The CPU(s) 602 may also be configured to access the display controller(s) 618 over the system bus 608 to control information sent to one or more displays 626. The display controller(s) 618 sends information to the display(s) 626 to be displayed via one or more video processors 628, which process the information to be displayed into a format suitable for the display(s) 626. The display(s) 626 can include any type of display, including but not limited to a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, a light emitting diode (LED) display, etc.
Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the aspects disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer-readable medium and executed by a processor or other processing device, or combinations of both. The master devices and slave devices described herein may be employed in any circuit, hardware component, IC, or IC chip, as examples. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends upon the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The aspects disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
It is also noted that the operational steps described in any of the exemplary aspects herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary aspects may be combined. It is to be understood that the operational steps illustrated in the flowchart diagrams may be subject to numerous different modifications as will be readily apparent to one of skill in the art. Those of skill in the art will also understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.