System and method for latency critical quality of service using continuous bandwidth control
Patent Information
- Application Number
- JP2025051519
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-12-02
- Filing Date
- 2025-03-26
- Publication Date
- 2025-07-31
AI Technical Summary
Conventional communication systems face challenges in efficiently managing access between multiple high-bandwidth input channels and a single low-bandwidth output channel, leading to latency and unfair bandwidth allocation.
A Continuous Bandwidth Latency Critical (CBLC) Quality of Service (QoS) arbitration system that calculates source access permissions on a word-by-word basis, using a rank-based system to prioritize sources and intentionally corrupt or cut packets to ensure fair access.
The system achieves fair and efficient bandwidth allocation by dynamically adjusting source priorities and cutting packets mid-stream, thereby minimizing latency and ensuring that all sources have an opportunity to transmit.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Technical Field
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 942,299, filed Dec. 2, 2019, entitled “Systems and Methods for Latency-Critical Quality of Service Using Continuous Bandwidth Control,” which is hereby incorporated by reference in its entirety.
Background Art
[0002] The present invention generally relates to communication systems. More particularly, the present invention relates to a communication system that arbitrates access between multiple input channels for a single output channel.
[0003] Conventional communication systems may include multiple input channels and a single output channel. However, in the prior art, the multiple input channels receive data packets containing multiple data words. Once an arbitration decision is made as to which of the multiple input channels can communicate with the single output channel, the entire packet is transmitted from the selected input channel to the output channel.
Summary of the Invention
[0004] One or more embodiments of the present invention provide a bandwidth manager for packetized data designed to mediate access between a plurality of high-bandwidth input channels (sources) for one low-bandwidth output channel (sink). The system calculates, on a word-by-word basis, the sources that are permitted access to the sink and, if a source loses priority during transmission, intentionally corrupts / cuts the packet. Each source is associated with a rank that is recalculated for each data word. The rank is incremented (attenuated) for each data word transmitted by the source and decremented (recovered) for each sink clock cycle while the source is unable to transmit to the sink. When a source buffer has transmitted enough words such that its absolute rank value rises above that of another source buffer waiting for transmission, the system "cuts" the current packet by stopping it in mid-packet in that transmission buffer and selects the lower-rank source buffer as the new transmitting buffer. If there are multiple request buffers of the same rank, the system uses a weighted priority random scheduler for buffer selection.
Brief Description of the Drawings
[0005]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7A
Figure 7B
Figure 8A
Figure 8B
Figure 9A
Figure 9B
Figure 10A
Figure 10B
Embodiments for Carrying Out the Invention
[0006] A Continuous Bandwidth Latency Critical (CBLC) Quality of Service (QoS) arbitration system is a bandwidth manager for packetized data designed to arbitrate access between multiple high-bandwidth input channels (sources) for one low-bandwidth output channel (sink). The CBLC QoS arbitration system is unique in that it calculates sources that are permitted access to the sink on a word-by-word basis and intentionally corrupts packets if a source loses priority during transmission. This is different from other QoS schemes that typically operate at the granularity of full packets and do not have a mechanism to corrupt packets in order to achieve a minimal delay penalty when switching between sources.
[0007] Internally, each source writes packets into a dedicated CBLC QoS buffer. Next, the CBLC QoS arbiter determines the buffer that is allowed access to the sink based on the rank values assigned to each buffer, where the lowest rank has the highest priority. The actual rank of the buffer selected to be sent to the sink is recalculated for each data word transmitted based on a configurable attenuation function. Conceptually, this is called rank attenuation. Conversely, the actual rank of each buffer not being sent to the sink is recalculated for each word requested by the sink based on a configurable recovery function (recovery continues for all buffers even if not all buffers have data to send). Conceptually, this is called rank recovery. The CBLC QoS arbitration system achieves fair bandwidth access to the sink through a traffic policing mechanism called packet cut. When a source buffer has sent enough words such that its absolute rank value rises above the absolute rank value of another source buffer waiting to transmit, the CBLC QoS arbiter stops the packet in mid-stream in the transmitting buffer and selects the lower-rank source buffer as the new buffer to transmit, thereby "cutting" the currently in-progress packet. If there are multiple requesting buffers of the same rank, the CBLC QoS arbitration system employs a new implementation of a weighted priority random scheduler for buffer selection.
[0008] FIG. 1 shows a block diagram of a CBLC QoS arbitration system 100 according to an embodiment of the present invention. As shown in FIG. 1, the CBLC QoS arbitration system 100 includes source buffers 110 to 116 and a QoS arbiter 120. The QoS arbiter 120 includes a buffer rank calculator 130, a weighted priority randomized (WPR) scheduler 140, and a buffer selector 150. The buffer rank calculator 130 includes buffer rank memories 170 to 176 for each buffer, a rank recovery adjustment system 180, and a rank comparator 184. The WPR scheduler 140 includes a weighted priority table 162 and a credit accumulation engine (CAE) 164.
[0009] Also shown are one or more source clocks 142, a sink clock 144, sink data 146, a sink ready signal 148 received from the data sink to indicate that the sink is ready to receive data, and a cut signal 149 transmitted to the data sink when a packet is cut.
[0010] Furthermore, as shown in FIG. 1, the identification information of the buffer that requests the transmission of data to the sink is transmitted from the buffer selector 150 to the buffer rank calculator 130 as request buffer information 152. Further, the absolute rank 153 of each buffer is transmitted from the buffer rank memories 170 to 175 to the rank comparator 184.
[0011] When the buffer rank calculator 130 determines which of the buffers identified in the requested buffer information 152 has the lowest rank, the buffer rank calculator 130 passes the identification information of one or more of the lowest-rank buffers to the WPR scheduler 140 as the lowest-rank buffer information 154. When the WPR scheduler 140 determines which of the buffers identified by the lowest-rank buffer information 154 should be made accessible to the sink, the WPR scheduler 140 transmits the identification information of the selected buffer to the buffer selector 150 as the transmission buffer information 156.
[0012] In addition, as further described below, each of the source buffers 110-116 may transmit a sink request 191 to the buffer selector 150 indicating that the individual buffer has data packets to transmit to the sink. When a particular individual buffer is selected by the buffer selector 150 as the buffer that will transmit its data to the sink, the individual buffer receives a buffer confirmation signal 193 from the buffer selector 150.
[0013] Also, as will be further described below, buffer selector 150 transmits selection buffer information 195 to buffer rank calculator 130 and WPR scheduler 140. Selection buffer information 195 indicates which buffer is currently selected to provide data to the sink. When the transmit buffer is selected by WPR scheduler 140, and this information is passed to buffer selector 150 and used as the newly selected buffer, selection buffer information 195 is then passed to each of buffer rank memories 170 - 176. Each buffer rank calculator compares its own identification information with selection buffer information 195 to determine the attenuation or recovery information for that buffer. The attenuation / recovery information indicates whether the buffer is currently transmitting to the sink and thus whether its actual rank should be attenuated by buffer rank calculator 130 according to the stored attenuation equation for that buffer, and whether the buffer is not currently transmitting to the sink and thus whether its actual rank should be recovered by buffer rank calculator 130 to the minimum rank set for the individual buffer according to the stored recovery equation for those individual buffers.
[0014] Turning now to source buffers 110 - 116, the CBLC QoS arbitration system 100 is designed to support as many source channels as the system requirements demand by implementing source buffers for each channel. The minimum number of source buffers is desirably two or more, while the maximum number is limited only by the overall system performance requirements. Each source buffer serves to queue packetized data and keep track of the number of packets stored and the number of packets it can accept before being considered full. The buffer realizes this by implementing a dual asynchronous FIFO system. One FIFO is used to store the actual data of the received packets, and the other FIFO is used to store descriptor information such as the start and end addresses of the packets in the data FIFO. The buffer is designed to queue full packets and drop received packets only when the available space in the data FIFO is less than the maximum packet size defined by the system or when the maximum number of packets is stored (i.e., when the descriptor FIFO is full). Another function of the source buffer is to perform data width conversion. That is, the width of the data words written to the data FIFO of an individual source buffer may be different from the width of the words read out and transmitted to the sink.
[0015] Another important role of the source buffer is to transfer data from the source clock domain to the sink clock domain. Since the CBFC QoS arbitration system 100 operates at the per-word granularity level, it must be able to make decisions on a per-clock cycle basis. Since the QoS arbiter 120 is executed in the sink clock domain, all decisions are made at the sink clock rate, and the buffer is responsible for transferring data and the necessary control signals to the sink clock domain. This is done using common asynchronous FIFO design techniques such as Gray code used for the handover of the FIFO address pointer from the source to the sink clock domain. By implementing the buffer as an asynchronous FIFO, the CBLC QoS system can transfer data from multiple independent source clock domains to a single common sink clock domain.
[0016] The source buffer receives data at the clock rate of the source clock 142 and can store that data, thus transferring data from the source clock domain to the sink clock domain. The buffer then uses the sink clock 144, which is also used by the QoS arbiter 120, to send the data to the QoS arbiter 120. Each source channel, i.e., buffer, can be operated at a different independent source clock frequency. The only requirement that the CBLC QoS arbitration system 100 imposes on the system in one embodiment is that the sink transmit bandwidth does not exceed the receive bandwidth of any individual source, creating a scenario where it can be read faster than it is written to the data FIFO of the buffer.
[0017] When the buffer starts receiving packets from the source channel, it issues a downstream access request to the QoS arbiter 120 for transmission to the sink 140. The buffer continues to request transmission as long as it has data in its queue.
[0018] When the buffer completes the transmission of the current packet, the buffer notifies the QoS arbiter 120 of the end of the packet by deasserting its request signal for at least one clock cycle. At this point, the QoS arbiter 120 can select a new buffer to start transmission, or, if there are still packets to be transmitted in the buffer and no other buffer is requesting, it may select the same buffer. If the QoS arbiter 120 cuts a buffer while a packet is being transmitted in the middle, the acknowledgement signal 193 to the selected buffer is deasserted. The previously selected buffer interprets this as a cut and, depending on the set mode or the number of times the packet has already been retried, either resets its data FIFO read address to the beginning of the packet and attempts retransmission, or sets the address to the end of the packet and drops it completely from the queue.
[0019] Turning now to the buffer selector 150, the buffer selector 150 of the QoS arbiter 120 controls the transfer of data from the source buffers 110 - 116 to the data sink 146. Each clock cycle when the sink asserts the ready signal 148, one word of data is transferred from the selected source buffer to the sink 146. The ready signal 148 from the sink controls the rate at which the CBLC QoS arbitration system 100 can send data, and thus directly controls the bandwidth of the system. The CBLC QoS arbitration system 100 places no requirements on the frequency at which the ready signal 148 can be asserted or its periodicity.
[0020] Irrespective of the ready signal 148, the buffer selector 150 evaluates in each clock cycle whether the current buffer selected for transmission matches the buffer selected from the WPR scheduler 140. If there is a mismatch, the buffer selector 150 immediately switches the selected source buffer (described further below) and uses the cut signal 149 to notify the downstream sink of the cut event.
[0021] Also, buffer selector 150 communicates the current request status of all buffers and which buffer is in transmission to buffer rank calculator 130. Buffer rank calculator 130 uses this information to determine which buffer to select when performing buffer rank comparison and controlling the decay and recovery of each buffer rank.
[0022] Even when there is no buffer requesting transmission, buffer selector 150 sends a signal to buffer rank calculator 130 every cycle in which sink asserts ready signal 148, so that buffer rank calculator 130 can continue to perform buffer rank recovery (further described below) that allows the buffer that previously transmitted data to return to its absolute rank minimum value.
[0023] Turning to buffer rank calculator 130 here, buffer rank calculator 130 of QoS arbiter 120 repeatedly recalculates the rank of each buffer 110 - 116 every cycle in which sink asserts the ready signal. As further described below, buffer rank calculator 130 increases the rank of the buffer actively transmitting data to the sink, and at the same time buffer rank calculator 130 decreases the rank of the remaining buffers not transmitted to the sink. By recalculating the rank of each buffer every time a word is transmitted, buffer rank calculator 130 enables QoS arbiter 120 to make bandwidth control decisions on a word-by-word basis. Also, buffer rank calculator 130 compares the ranks of all buffers and transfers a list of all requesting buffers with the lowest rank and tied ranks to WPR scheduler 140.
[0024] Turning our attention to the WPR scheduler 140, whenever the QoS arbiter 120 has to select a new buffer to transmit from a plurality of request buffers that are tied at the lowest rank and are transmitted as the lowest rank buffer information 154 from the buffer rank calculator 130 to the WPR scheduler 140, as will be further described below, the WPR scheduler 140 of the QoS arbiter 120 enables the buffer selector 150 to make a fair and random decision. Also, the WPR scheduler 140 receives the selected buffer information 195 from the buffer selector 150.
[0025] If there is only one buffer that has the lowest rank and is identified as requesting transmission in the lowest rank buffer information 154, the WPR scheduler 140 simply selects that buffer as the next transmission buffer and transfers the identification information of that buffer to the buffer selector 150 as the transmission buffer information 156.
[0026] However, in the lowest rank buffer information 154, if multiple buffers are identified as having the same rank and requesting transmission, the WPR scheduler 140 uses a weighted priority table 162 (described further below) that holds the probability weights set for the individual buffers 110-116 to select a buffer to be newly transmitted from among the buffers requesting access to the sink and having the same lowest rank. This is called a QoS collision. A buffer with a higher probability weight setting in the weighted priority table 162 will be selected more frequently statistically when it ties with a buffer having a lower probability weight. This enables the CBLC QoS arbitration system 100 to implement a priority hierarchy among the buffers while also enabling all buffers to have a chance for their packets to be transmitted first (collision resolution is described further below). When the WPR scheduler 140 selects a buffer to transmit from among the multiple requested buffers identified by the lowest rank buffer information 154 during a collision, the WPR scheduler 140 continues to select the same buffer and transmit it to the buffer selector 150 as the transmit buffer information 156 as long as the selected buffer has the same lowest rank or the transmit request is stopped (e.g., packet completion) as signaled by the buffer selector 150.
[0027] In one embodiment, the WPR scheduler 140 also includes a configurable credit accumulation engine (CAE) 164 that is used to adjust the buffer selection process during collision resolution. The CAE 164 periodically samples information on the lowest-ranked request buffer 154 from the buffer rank calculator 130 at configurable intervals (e.g., every 100 ns). When the CAE 164 determines that there is a transmission request buffer that is not currently selected for transmission, the CAE 164 grants a configurable number of credits (e.g., 1 credit) to one of the waiting buffers. If only one buffer requests transmission but is not currently selected for transmission, the credit is automatically granted to that buffer. Alternatively, if there are multiple buffers waiting for transmission at any interval period, the CAE 164 uses the priority of each buffer included in the weighted priority table 162 to grant a credit to one of the waiting buffers. Then, the CAE 164 stores the number of credits granted to each buffer.
[0028] When the currently transmitting buffer completes or aborts the transmission of its packet, the WPR scheduler 140 first identifies all the lowest-ranked buffers that wish to transmit from the lowest-rank buffer information 154. The WPR scheduler 140 then obtains the number of credits granted to the specific buffers identified by the lowest-rank buffer information 154. The WPR scheduler 140 then identifies the buffer with the largest number of accumulated credits and transmits the identification information of that buffer as the transmit buffer information 156 to the buffer selector 150. When the buffer identification information is transmitted to the buffer selector 150, the credits associated with the selected buffer are cleared to zero.
[0029] If there are multiple buffers specified by the lowest rank buffer information 154 and one or more buffers specified by the lowest rank buffer information 154 have the same number of cumulative credits, the WPR scheduler 140 obtains, from the WPT 162, the probability weights associated with one or more buffers having the same number of cumulative credits, and randomly selects one of these buffers based on the relative probability weights. Then, the selected buffer is transmitted to the buffer selector 150 as the transmission buffer information 156. Similar to the above, when the identification information of the selected buffer is transmitted to the buffer selector 150, the credits associated with the selected buffer are cleared to zero.
[0030] By setting, for each interval, the number of credits assigned when each buffer is selected by the CAE, the system can adjust the probability model of the WPR scheduler so that the time of the buffer spent waiting to be selected for transmission is somewhat more favorable. For example, if each buffer is configured such that credits are assigned based on the weights assigned by the WPT, since the probability of the WPT and the credits assigned by the CAE are essentially multiplied, the system preferentially treats the buffer exponentially more as the time the buffer waits to be selected for transmission becomes longer. If each buffer is configured to be assigned the same number of credits, a system can be realized that preferentially treats the buffer linearly more as the time the buffer waits for transmission becomes longer.
[0031] Turning now to the buffer rank calculator 130, the rank calculation process for each individual buffer will be described in more detail here. As described above, the rank of each individual buffer is calculated by the buffer rank calculator 130 for each clock cycle in which the sink asserts its ready signal 148. The individual buffer actually selected for transmission to the sink during a particular clock cycle is identified as "in decay", and its rank is incremented based on its individual rank decay formula [δn(x)]. Conversely, a buffer not transmitted to the sink during a particular sink ready cycle is identified as "in recovery", and its rank is decremented based on its individual rank recovery formula [ρn(x)]. As explained above, only one buffer is selected for transmitting data to the sink during a particular clock cycle. As a result, only the selected individual buffer decays during that sink ready cycle, and all other remaining buffers either recover or remain unchanged if they have already recovered to the minimum rank as described below. Alternatively, if none of the buffers have any remaining data to transmit to the sink, all buffers either recover or remain unchanged if they have already recovered to the minimum rank as described below. Since the buffer rank calculator 130 calculates and tracks the ranks of each of the buffers 110-116 independently, each buffer may have an independent decay formula and an independent recovery formula.
[0032] The minimum and maximum ranks of each buffer can be set independently and are stored in the buffer rank calculator within the buffer rank memories 170-176 of each buffer. The minimum rank limit value of the buffer is the initial rank value at which the buffer starts before transmitting data to the sink. Also, the minimum rank is the lowest rank value to which the buffer can potentially decrease during recovery. Similarly, the maximum rank limit value is the maximum rank value to which the buffer can potentially increase during decay.
[0033] The settings of the minimum rank and the maximum rank can be used to construct a hierarchy of priorities among different buffers. For example, consider a two-buffer system configured such that buffer [2] has a minimum rank value of 2 and buffer [l] has a minimum rank value of 1. In this system, when buffer [1] and buffer [2] are at their minimum ranks, buffer [1] is selected because its minimum rank is 1, which is a lower value. However, as buffer [1] transmits data to the sink, for each word of data transmitted, the rank of buffer [1] increases according to the attenuation function stored for buffer [l]. When buffer [1] has attenuated such that its rank becomes equal to the rank of buffer [2], buffer [2] is identified as one of the lowest-rank buffers and may be selected to use WPT162 to transmit data to the sink in case of a collision.
[0034] From the perspective of calculating the rank of each buffer at any given time, the rank of a buffer can be decomposed into two values: the actual rank [R(x)] and the absolute rank [R'(x)], which is an integer-only number derived from the actual rank [R(x)]. The actual rank is implemented as a 32-bit value, and the most significant 8 bits are used as the absolute rank. In this implementation, the actual rank can represent any real number from 0.0 to 255.99999994 (with a precision of 1 / 224), and the absolute rank can represent any integer from 0 to 255. In other embodiments, the actual rank may be implemented as a 64-bit register.
[0035] The actual rank [R(x)] of the buffer is a non - negative real - valued number calculated by the buffer rank calculator 130 and is used internally by the buffer rank calculator 130 as described herein. The actual rank of the buffer can start from the minimum rank of a fully recovered buffer. Conversely, if the current buffer is decayed to a higher rank, the actual rank of that buffer can be a higher value. During decay, the actual rank of the buffer is determined using its decay formula. The decay formula of the buffer can be any constant function or variable function according to the needs of the system. For example, by adopting the exponential decay function δ(x)=x2 as the decay formula of the buffer and rapidly increasing the rank of the buffer for each word in the transmitted packet, a decay that exponentially penalizes the buffer for the transmission of large packets can be implemented. Conversely, a buffer adopting the logarithmic decay function δ(x)=log(x) penalizes the buffer for transmitting multiple short packets by imposing a more severe penalty on the buffer for the first few words of the transmitted packet. A buffer adopting a linear decay function gives equal weight to each word transmitted, regardless of the size of the packet to be transmitted.
[0036] The absolute rank [R'(x)] of the buffer is the integer representation of the actual rank calculated by truncating the actual rank to the next lower integer value. The absolute rank is the value used by the rank comparator 184 of the buffer rank calculator 130 to determine which of one or more buffers has the lowest absolute rank.
[0037] Similar to the calculation of the actual rank of the buffer using the individual attenuation formulas during attenuation (while data is being transmitted), the individual recovery formulas of the buffer are used for the calculation of the actual rank of the buffer during recovery (when no data is being transmitted). Similar to the attenuation formulas, the recovery formulas of the buffer can be any constant function or variable function that meets the needs of the system. For example, the exponential recovery function ρ(x) = x^2 implements a recovery that penalizes frequent packet transmissions so that the buffer recovers slowly immediately after transmission (explained in detail in the following rank calculation example).
[0038] Regarding the formula, the actual rank attenuation formula can be expressed as follows. Rn(x)=Sn + δn(x)
[0039] Here, Rn(x) is the actual rank calculated for the x-th word transmitted from buffer [n], Sn is the initial actual rank value at which buffer [n] starts to attenuate, and δn(x) is the attenuation function of buffer [n].
[0040] Similarly, the actual rank recovery formula can be expressed as follows. Rn(x)=Sn - ρn(x)
[0041] Here, Rn(x) is the actual rank calculated for the x-th word not transmitted from buffer [n], Sn is the initial actual rank value at which buffer [n] starts to recover, and ρn(x) is the recovery function of buffer [n].
[0042] Furthermore, the absolute rank formula can be expressed as follows. Rn'(x)=floor(Rn(x))
[0043] Here, Rn'(x) is the absolute rank calculated for the currently requested word, floor() is the mathematical floor function, and Rn(x) is the actual rank calculated for the currently requested word with respect to buffer [n].
[0044] Figure 2 shows the graphical representation 202 of the buffer rank during attenuation and the graphical representation 204 of the buffer rank during recovery. In this example, the attenuation function of the buffer is the linear function δ n (x)=C D *x, where C D is the attenuation constant and x is the number of sink cycles of attenuation experienced by the buffer, and this attenuation function is proportional to the number of words transmitted by the buffer. Similarly, the recovery function of the buffer is ρ n (x)=C R *x, where C R is the recovery constant and x is the number of recovery cycles experienced by the buffer, and this recovery function is proportional to the number of ready signals from sinks where the buffer did not transmit words. In Figure 2, C D is set to 0.25 and C R is set to 0.125 (C D / 2).
[0045] As shown in the graphical representation 202 of the buffer rank during attenuation in Figure 2, the vertical axis represents the buffer rank and the horizontal axis represents the number of words transmitted by the buffer during attenuation. As described above, as the buffer transmits words, the actual rank of the buffer increases using the attenuation function of the buffer shown as the actual rank 220. Further, the absolute rank 224 of the buffer is determined by rounding down the actual rank of the buffer to the next lower integer as shown. As shown in the graphical representation 202 of the buffer rank during attenuation in Figure 2 and represented by the dotted vertical lines 210 to 214, the absolute rank of the buffer increases from the initial minimum rank of 0 to ranks 1, 2, and then 3 after transmitting 4, 8, and 12 words, respectively.
[0046] As shown in the graphical representation 204 of the buffer rank during recovery in FIG. 2, the vertical axis again represents the buffer rank, and the horizontal axis again represents the number of words transmitted by the buffer during recovery. As described above, for each sink request where an individual buffer does not transmit a word, the actual rank of the buffer decreases using the buffer recovery function shown as the actual rank 220. Further, the absolute rank 224 of the buffer is determined by truncating the actual rank of the buffer to the next lower integer, as shown. As shown in the graphical representation 204 of the buffer rank during recovery and represented by the dotted vertical line 216, the absolute rank of the buffer decreases to rank 2 if no data is transmitted for 8 sink ready cycles from the start rank 3, which is the rank at which attenuation stops.
[0047] FIG. 3 shows the graphical representation 302 of the buffer rank during attenuation and the graphical representation 304 of the buffer rank during recovery when using different attenuation and recovery formulas than those shown in FIG. 2. In FIG. 3, the attenuation function of the buffer is set to the exponential function δn(x)=CD*x2, and the recovery function of the buffer is ρn(x)=CR*x2. In FIG. 3, CD is set to 0.25 and CR is set to 0.125 (CD / 2).
[0048] As shown in the graphical representation 302 of the buffer rank during attenuation in FIG. 3, the vertical axis represents the buffer rank, and the horizontal axis represents the number of words transmitted by the buffer during attenuation. As described above, as the buffer transmits words, the actual rank of the buffer increases using the buffer attenuation function shown as the actual rank 320. Further, the absolute rank 324 of the buffer is determined by truncating the actual rank of the buffer to the next lower integer, as shown. As shown in the graphical representation 302 of the buffer rank during attenuation and represented by the dotted vertical lines 310 - 314, the absolute rank of the buffer increases from the initial minimum rank 0 to rank 1, 2, and then 4 after transmitting 2, 3, and 4 words respectively.
[0049] As shown in the graphical representation 304 of the buffer rank during recovery in FIG. 3, the vertical axis again represents the rank of the buffer, and the horizontal axis again represents the number of words transmitted by the buffer during recovery. As described above, for each sink request where an individual buffer does not transmit a word, the actual rank of the buffer decreases using the buffer recovery function shown as the actual rank 320. Further, the absolute rank 324 of the buffer is determined, as shown, by truncating the actual rank of the buffer to the next lower integer. As shown in the graphical representation 304 of the buffer rank during recovery, and represented by the dotted vertical lines 316, 318, the absolute rank of the buffer decreases from the start rank 4, which is the rank at which attenuation stops, to rank 3 and then rank 2 if no data is transmitted between 3 and 4 sink request cycles each.
[0050] FIG. 3 shows how selecting different configurations of the attenuation function and the recovery function affects the performance of the overall system. The attenuation formula selected in FIG. 3 indicates that when a buffer attempts to transmit a large number of words to the sink by transmitting a large packet or multiple packets continuously, the rank of that buffer decays exponentially faster, potentially giving other buffers a greater opportunity to transmit more quickly. Similarly, the recovery formula selected in FIG. 3 indicates that if a buffer does not wait long enough while transmitting a packet, the rank of that buffer may not recover to a low enough level such that the buffer becomes prioritized over other buffers.
[0051] In one embodiment, buffer rank calculator 130 includes rank recovery adjustment system 180. Rank recovery adjustment system 180 adjusts the actual rank of a buffer (which can affect the absolute rank of the buffer) during recovery based on how long it waits until access is permitted for the buffer to be sent to the sink. This is referred to as rank recovery adjustment. When rank recovery adjustment is enabled, the rank calculator tracks and stores, for each buffer, the number of ready cycles in which the sink requested data but the waiting buffer was not selected for transmission. For each request for which the waiting buffer fails to transmit, rank recovery adjustment system 180 calculates a rank recovery adjustment value using the rank recovery formula for the individual buffer.
[0052] When the waiting buffer is finally selected for transmission, the rank of the buffer decays as normal using the buffer's rank decay formula. However, if the buffer experiences the first request cycle of recovery after the completion of the buffer's packets, the recovery adjustment value is applied only once to the first request cycle of recovery. Also, the recovery adjustment system has a configuration such that the same recovery adjustment value can be applied to the first request cycle of recovery even when the packet is cut. If this configuration is invalid and the packet is cut, the recovery adjustment system does not apply the recovery adjustment value to the first request cycle of recovery.
[0053] Once the recovery adjustment value is applied to the buffer's rank, the recovery adjustment value is cleared so that a new recovery value can be calculated when the buffer is next made to wait for transmission, and the buffer continues to recover using its normal recovery function. The ultimate effect of the rank recovery adjustment is to fit the rank recovery curve to the recovery curve that would be expected if there were no delay in the buffer's packet transmission.
[0054] When rank recovery adjustment is disabled, the time for the absolute rank of the buffer to decay and the time for it to recover are delayed compared to the expected time when packet transmission is not delayed. Conversely, when rank recovery adjustment is enabled, the absolute rank decay time of the buffer is still shifted, but the recovery time is adjusted to match the recovery rank expected when the buffer's transmission is not delayed in the first non-transmission cycle. Further, when applying rank recovery adjustment, the rank recovery adjustment system 180 ensures that the rank does not decrease below the minimum rank configuration of the buffer due to the applied adjustment.
[0055] FIG. 4 shows examples of buffer rank decay and recovery curves when the rank recovery adjustment system 180 is disabled 402 and enabled 404. As shown in FIG. 4, in the buffer rank decay and recovery curves when the rank recovery adjustment system 180 is disabled 402, the vertical axis represents the rank of the buffer, and the horizontal axis represents the number of words transmitted by the buffer during decay. FIG. 4 shows the expected decay and recovery curve 420 and the actual decay and recovery curve 430. The expected decay and recovery curve 420 is the recovery curve that would occur if the buffer started transmitting data at time zero and stopped transmitting data when the curve 420 reached its peak. In reality, the first transmission of the buffer was delayed by a delay time 440. However, when the buffer's transmission is started after the delay time 440, the actual decay and recovery curve 430 becomes the actual decay and recovery curve experienced by the buffer. As shown at 402, when the rank recovery adjustment system 180 is disabled, the actual decay and recovery curve 430 coincides with the expected decay and recovery curve 420 shifted to the right by the delay time 440.
[0056] As shown in FIG. 4, in the buffer rank decay and recovery curve when the rank recovery adjustment system 180 is active 404, the vertical axis again represents the buffer rank, and the horizontal axis again represents the number of words transmitted by the buffer during decay. Also shown are the expected decay and recovery curve 420 and the actual decay and recovery curve 430. Here too, in the actual decay and recovery curve 430, the transmission of the buffer was delayed by a delay time 440. However, since the rank recovery adjustment system 180 is currently active, when the actual curve 430 reaches its peak and the buffer stops transmitting, the rank recovery adjustment is immediately applied, causing the actual decay and recovery curve 430 to immediately decrease so as to match the estimated decay and recovery curve 420 that the buffer would have experienced if it had not experienced a delay. In this way, the rank of the previously delayed buffer recovers to a lower rank faster than it otherwise would, increasing the likelihood that the buffer will be selected faster for data transmission. That is, when the rank recovery adjustment is inactive, the decay and recovery time of the absolute rank of the buffer is delayed compared to the time expected when packet transmission is not delayed. Conversely, when the rank recovery adjustment is active, the absolute rank decay time of the buffer is still shifted, but the recovery time is adjusted to match the recovery time expected when there is no buffer transmission delay.
[0057] A conflict is defined as when the buffer selector 150 has to select a new buffer to send to the sink from among multiple request buffers that are all at the lowest rank and have the same score. This occurs when a packet has completed transmission or when a buffer has been cut because its rank is no longer the lowest. To resolve these conflict scenarios, the buffer selector 150 depends on the WPR scheduler 140. The purpose of the WPR scheduler 140 is to provide a configuration of another layer to achieve a buffer priority hierarchy that meets the system requirements. The WPR scheduler 140 accomplishes this by using two mechanisms: a configured weighted priority table 162 and an optional credit accumulation engine 164. The weighted priority table 162 is the main mechanism used by the WPR scheduler 140 to randomly select a buffer from among the buffers requesting transmission with a desired probability distribution. When the credit accumulation engine 164 is disabled, the WPR scheduler 140 uses the weighted priority table 162 only during conflicts when it has to select a new buffer to send. Conversely, when the credit accumulation engine 164 is enabled, the WPR scheduler 140 uses the weighted priority table 162 at periodic intervals to assign credits to the buffers waiting for transmission. Then, when a conflict needs to be resolved, the WPR scheduler 140 selects the buffer with the most accumulated credits and uses the weighted priority table 162 when it needs to resolve ties.
[0058] The weighted priority table 162 used by the WPR scheduler 140 is a table having N entries, where N is equal to the number of buffers in the system. Each entry is composed of the probability weight of the buffer corresponding to the index of the entry within the table. The set weight is intended to represent the probability of selecting a particular buffer over all other buffers in the system, and the total probability is 100%. For example, consider a system having a weighted priority table with four buffers and thus four entries. In this example, assuming the desired probability weights for the four buffers are 40%, 20%, 30%, and 10% respectively, the weighted priority table is configured as follows.
Table 1
[0059] The weighted priority table 162 is used by the WPR scheduler 140 to randomly and continuously select, for each clock cycle, the buffer to be transmitted from the lowest-ranked buffer. As described above, the WPR scheduler 140 receives the selected buffer information 195 from the buffer selector 150. From this, the WPR scheduler recognizes which buffer is currently selected for transmitting data to the sink. While the currently selected buffer is still being transmitted and is one of the lowest-ranked buffers, the WPR scheduler simply notifies the buffer selector to maintain the currently selected buffer as the transmission buffer. When the currently selected buffer stops the transmission request (i.e., the transmission of the current packet is completed), or the buffer rank calculator notifies the WPR scheduler that the currently selected buffer is no longer the lowest rank among the requested buffers (i.e., a cut occurs), the WPR scheduler sends a signal to the buffer selector to select a new transmission buffer. Therefore, the WPR scheduler continuously evaluates, for each clock cycle, which buffer among the buffers not currently selected as the transmission buffer should be the next transmission buffer. By restricting the selection process to only the non-transmitting buffers that are actively requesting, the weighted priority table 162 derives relative priority weights using the assigned global buffer priority weights. The probability of selecting a requested buffer at any given clock cycle is derived from these relative priority weights. For example, considering a scenario where buffer [2] and buffer [3] are requesting transmission while buffer [1] is currently transmitting a packet, the relative probability weights are as follows.
Table 2
[0060] Table 2 shows that the probability of buffer [2] being selected is 40%, and the probability of buffer [3] being 60%. Thus, the relative probabilities of buffer [2] and buffer [3] maintain the same global 2:3 probability ratio of the buffers set in the weighted priority table. To resolve collisions, the WPR scheduler 140 uses the result of the weighted priority table 162 to directly select a new transmission buffer when CAE164 is invalid or to assign credits to the buffers at regular intervals when CAE164 is valid.
[0061] When CAE164 is disabled, the WPR scheduler 140 directly uses the output of the weighted priority table 162 to resolve collisions. The WPR scheduler 140 does this by evaluating the decision flow outlined below in the flowchart of FIG. 5 on a per clock cycle basis. Consider an example where buffer [1] is currently transmitting a packet while buffers [2] and [3] are requesting transmission. The probability of selecting either buffer [2] or buffer [3] is given by the relative probability weights shown in Table 2. Assuming that buffer [1] completes the transmission of the packet and its rank does not increase above the ranks of buffers [2] and [3], the WPR scheduler 140 selects the next buffer to transmit between buffer [2] and buffer [3] at the instant buffer [1] completes the packet. Again, the probability of buffer [2] being selected is 40%, and the probability of buffer [3] being selected is 60%.
[0062] FIG. 5 shows a flowchart 500 of the decision flow of the WPR scheduler 140 without using the CAE 164 according to an embodiment of the present invention. Starting from start 510, the process proceeds to step 520, where the WPR scheduler 140 determines whether there is a buffer that requests to send data to the sink. If there is no buffer that requests to send data to the sink, the process returns to start 510 and waits for the next clock cycle. Conversely, if there is a buffer that requests to send data to the sink, the process proceeds to step 530. In step 530, the WPR scheduler 140 determines whether the currently selected buffer still requests to send data and has the lowest rank or is tied at the lowest rank. If the currently selected buffer still requests to send data and has the lowest rank or is tied at the lowest absolute rank, the process proceeds to step 540, where the WPR scheduler 140 maintains the currently selected buffer as the selected buffer. The identification information of the selected buffer is sent to the buffer selector 150 as the transmit buffer data 156. Thereafter, the process returns to start 510 and waits for the next clock cycle.
[0063] Conversely, if the currently selected buffer no longer requests transmission, or if the currently selected buffer is no longer the lowest absolute rank or tied at the lowest absolute rank, the process proceeds to step 550. In step 550, the WPR scheduler 140 determines one or more buffers having the lowest absolute rank. If there is only one buffer having the lowest absolute rank, the process proceeds to step 570, where that one buffer having the lowest absolute rank is selected. The identification information of the selected buffer is sent to the buffer selector 150 as the transmit buffer data 156. Thereafter, the process returns to start 510 and waits for the next clock cycle.
[0064] Conversely, if there are multiple buffers that are the lowest absolute rank requesting transmission, the process proceeds to step 560. In step 560, the WPR scheduler 140 randomly selects one of the requested buffers using their relative probability weights from the WPT 162. For example, if there are two buffers with the lowest priority requesting transmission, the relative probability of buffer [2] is 40%, and the probability of buffer [3] is 60%, the WPR scheduler 140 may randomly determine a numerical value between 1 and 100. If the numerical value is between 1 and 40, buffer [2] is selected. If the numerical value is between 41 and 100, buffer [3] is selected. The identification information of the selected buffer is sent to the buffer selector 150 as the transmission buffer data 156. Thereafter, the process returns to start 510 and waits for the next clock cycle. In another embodiment of the WPT random selection mechanism, the WPT assigns 40 non-infectious values between 1 and 100 to buffer [2] and 60 non-infectious values to buffer [3]. Then, the WPT randomly selects a value from 1 to 100 for each clock cycle and selects the buffer assigned to that value.
[0065] Alternatively, if the CAE 164 is enabled, the WPR scheduler 140 uses the output of the weighted priority table 162 in two ways. The first is to use the random buffer selection of the weighted priority table to assign credits to the waiting buffers at regular intervals. The second is to make a final decision on which buffer should transmit next in the event of a collision where all buffers have an equal amount of credit accumulated.
[0066] By allocating credits to the buffers waiting for transmission at regular intervals, the WPR scheduler 140 enables the system to give more weight to the buffers that the system has to wait longer for transmission. By increasing the interval at which credits are allocated, or by increasing the number of credits allocated to a buffer for each interval at which they are selected, the WPR scheduler 140 can more significantly adjust the probability that a buffer is selected during collision resolution based on the buffer's waiting time.
[0067] Figure 6 shows a flowchart 500 of the decision flow of the WPR scheduler 140 when the CAE 164 is valid, according to an embodiment of the present invention. Starting from start 605, the process proceeds to step 610, where the WPR scheduler 140 determines whether the CAE interval has elapsed. The CAE interval may be, for example, 100 ns. When the CAE interval has elapsed, the process proceeds to step 615.
[0068] In step 615, the WPR scheduler 140 determines whether there is a buffer waiting for transmission. If there is a buffer waiting for transmission, the process proceeds to step 620. In step 620, the WPR scheduler 140 determines whether there are multiple buffers waiting for transmission. If there are multiple buffers waiting for transmission, the process proceeds to step 630, where the WPR scheduler 140 randomly selects one of the waiting buffers to which to allocate a credit based on the set probability weights. For example, if there are two buffers waiting for transmission, the relative probability of buffer [l] is 40%, and the probability of buffer [2] is 60%, the WPR scheduler 140 can randomly determine a numerical value between 1 and 100. If the numerical value is between 1 and 40, a credit is allocated to buffer [1]. If the numerical value is between 41 and 100, a credit is allocated to buffer [2]. The total amount of credits allocated to each buffer is stored by the WPR scheduler 140. Thereafter, the process proceeds to step 635.
[0069] Return to step 620. If there is only one buffer waiting for transmission, the process proceeds to step 625, where the WPR scheduler 140 assigns a credit to its only waiting buffer. Thereafter, the process proceeds to step 635.
[0070] Return to step 615. If there is no buffer waiting for transmission, the process proceeds to step 635.
[0071] At step 635, the WPR scheduler 140 determines whether the currently selected buffer still requests data transmission and has the lowest rank or is tied for the lowest rank. If the currently selected buffer still requests data transmission and has the lowest rank or is tied for the lowest absolute rank, the process proceeds to step 640, where the WPR scheduler 140 retains the currently selected buffer as the selected buffer. The identification information of the selected buffer is transmitted to the buffer selector 150 as the transmission buffer data 156. Thereafter, the process returns to start 605 and waits for the next clock cycle.
[0072] Conversely, if the currently selected buffer no longer requests transmission, or if the currently selected buffer is no longer the lowest absolute rank or tied for the lowest absolute rank, the process proceeds to step 645. At step 645, the WPR scheduler 140 determines one or more buffers having the lowest absolute rank. If there is only one buffer having the lowest absolute rank, the process proceeds to step 650, where that one buffer having the lowest absolute rank is selected. The identification information of the selected buffer is transmitted to the buffer selector 150 as the transmission buffer data 156. Thereafter, the process returns to start 605 and waits for the next clock cycle.
[0073] Conversely, if there are multiple buffers with the lowest absolute rank among the buffers requesting transmission, the process proceeds to step 655. In step 655, the WPR scheduler 140 obtains the credits associated with each of the multiple buffers that are requesting transmission and have the lowest absolute rank. If one buffer has more credits than one or more other buffers, the process proceeds to step 660, and the WPR scheduler 140 selects the requesting buffer with the most credits. Thereafter, the process proceeds to step 665, and the WPR scheduler 140 clears or zeros the cumulative credits of the selected buffer. The identification information of the selected buffer is transmitted to the buffer selector 150 as transmission buffer data 156. Thereafter, the process returns to start 605 and waits for the next clock cycle.
[0074] Returning to step 655, if there are multiple buffers that are requesting transmission and have the lowest absolute rank, and there are multiple buffers with the same number of credits, the process proceeds to step 670. In step 670, the WPR scheduler 140 randomly selects one of the requesting buffers with the same number of credits based on the probability weights set for these buffers represented in the WPT 162. For example, if there are two buffers with the lowest priority that are requesting transmission, these buffers have the same number of credits, the relative probability of buffer [l] is 40%, and the probability of buffer [2] is 60%, the WPR scheduler 140 can randomly determine a numerical value between 1 and 100. If the numerical value is between 1 and 40, buffer [1] is selected. If the numerical value is between 41 and 100, buffer [2] is selected. Thereafter, the process proceeds to step 665, and the WPR scheduler 140 clears or zeros the cumulative credits for the selected buffer. The identification information of the selected buffer is transmitted to the buffer selector 150 as transmission buffer data 156. Thereafter, the process returns to start 605 and waits for the next clock cycle.
[0075] Turning to the description of packet cut, in order to fairly allocate the bandwidth to all buffers, the QoS arbiter 120 implements a mechanism that stops the transmission of a packet in the middle of the buffer and allows another buffer with a lower rank to start the transmission. This is called packet cut or simply "cut".
[0076] A cut occurs when one or more buffers request to send data to a sink and the absolute rank of the current transmission buffer increases (decays) such that it is no longer the lowest absolute rank or tied for the lowest absolute rank. In this scenario, buffer selector 150 causes the current transmission buffer to stop transmission (even if it is in the middle of a packet) and permits access to the sink for a lower rank requested buffer as determined herein. As described above, the buffer selector realizes this by forcing the buffer's acknowledge signal low prior to packet completion to notify that the buffer has been cut. If multiple requested buffers are tied for the lowest rank, the WPR scheduler 140 randomly selects a new transmission buffer based on the priority weights set within the WPT 162. How the sink and source respond to a cut packet is outside the scope of the QoS design. As described above, when a buffer experiences a cut, the buffer may reset its data FIFO read address to the start of the packet and attempt retransmission depending on the set mode or the number of times the packet has already been retried, or set the address to the end of the packet and completely drop it from the queue. When a new buffer is selected for transmission, the buffer can start transmitting data from the current position of its FIFO read address. When the sink receives a cut signal 149, in one embodiment, the sink may store the currently received word as if it were in the middle of transmission or, if the cut signal is received before transmission is complete, discard the word. In another embodiment, in response to the cut signal, the buffer selector can intentionally corrupt the word currently being transmitted to the sink by, for example, applying error correction coding or changing bits when the word is transmitted, causing the transmitted word to fail the sink's error check and causing the sink to discard the word.
[0077] When a buffer is cut, the buffer must wait until its absolute rank in the buffers requesting transmission drops (recovers) to the lowest rank or ties for the lowest rank before it can be selected again. When a cut buffer is selected for retransmission, the buffer will attempt to retransmit the same packet from the beginning as it was when it was cut, or attempt to transmit the next packet queued, depending on the buffer mode setting.
[0078] Regarding the buffer setting mode, the buffer can operate in either of two modes: retry mode or drop mode. When the buffer is set to retry mode and is selected again to send data, the buffer will attempt to retransmit the cut packet up to the set maximum number of retries. Specifically, if a packet is cut in the middle, the buffer will attempt to retransmit the packet from the beginning. However, if the packet is cut up to the maximum number of retries, the buffer will drop the packet instead of attempting to retransmit it and will attempt to transmit the next packet queued instead.
[0079] When the buffer is set to drop mode, the buffer will not retry, simply drop the cut packet, and attempt to transmit the next packet queued when the buffer is selected to send data next. In addition to dropping packets cut during drop mode, the buffer will also drop packets if it requests access to the sink and is rejected in the next sink cycle because another buffer has been selected for transmission. The drop mode aims to minimize the waiting time of packets in the buffer queue. If packets are not transmitted or cut immediately, they are immediately considered invalid and discarded.
[0080] Table 3 shows an embodiment of the minimum and maximum ranges of some parameters of the CBLC QoS mediation system 100, as well as the standard ranges of specific embodiments. The first three system parameters (number of buffers, source clock frequency, and sink clock frequency) represent global parameters for the entire system. The next ten parameters (probability weight of buffer [n], decay function constant (CD) of buffer [n], recovery function constant (CR) of buffer [n], maximum rank of buffer [n], minimum rank of buffer [n], maximum number of attempts (cut mode) of buffer [n], maximum number of packets of buffer [n], maximum size of one packet of buffer [n], WPR credit accumulation interval, WPR credit accumulation amount of buffer [n]) are specific to individual buffers and can be changed individually for each buffer to adjust the system. The following parameters are stored in the buffer rank calculator 130 and / or can be obtained by the buffer rank calculator 130 - decay function constant (CD) of buffer [n], recovery function constant (CR) of buffer [n], maximum rank of buffer [n], minimum rank of buffer [n], and maximum number of re-attempts (cut mode) of buffer [n]. The following parameters are stored in the WPR scheduler 140 and / or can be obtained by the WPR scheduler 140 - probability weight of buffer [n], WPR credit accumulation interval, and WPR credit accumulation amount of buffer [n].
Table 3
[0081] In addition to the parameters specified above, the buffer rank calculator 130 stores the current actual rank and absolute rank for each buffer. Further, when enabled, the CAE 164 stores the number of credits assigned to each buffer.
[0082] The following is an embodiment of the parameter configuration of a complete CBLC QoS arbitration system 100 intended to represent a model of "fair" access. In this case, fair means that when the buffer is required to send a packet when its rank is at its initial (minimum) value, the CBLC QoS arbitration system 100 guarantees the transmission of the packet as long as its size is less than the set threshold.
Table 4
[0083] Based on the parameter configuration of the CBLC QoS arbitration system 100 in Table 4, it can be seen that the maximum storage packet size is 22 words. When the buffer sends a packet with a size exceeding 22 words, the absolute rank of the buffer increases during the packet transmission. Therefore, if another buffer is requesting transmission, it may be cut off. In this example, the recovery function of each buffer is configured as a function of its probability weight and the maximum storage packet size. This ensures that by slowing down the recovery each time a packet is transmitted, the buffer with a lower rank consumes a portion of the sink bandwidth according to its probability weight.
[0084] Figures 7A and 7B show timing diagrams highlighting the basic operation of the CBLC QoS arbitration system 100 when the CBLC QoS arbitration system 100 receives a signal packet in one buffer and no other buffer is transmitting or requesting transmission. Figures 7A and 7B include signal traces over the following time progression, as shown on the x-axis. Figure 7B temporally overlaps Figure 7A and occurs immediately after Figure 7A.
[0085] Source clock - This trace represents the high / low state of the source clock. The source clock controls the timing at which packets are received in the input buffer.
[0086] Buffer data - This trace identifies the individual words within the packet. As shown in Figure 7, there are four words A1 to A4 in the packet.
[0087] Buffer Data Valid - This trace is high when the buffer is receiving valid data.
[0088] Buffer Packet Start - This trace goes high when a packet arrives at the buffer.
[0089] Buffer Packet End - This trace goes low when a valid packet ends.
[0090] Sink Clock - This trace represents the high / low state of the sink clock. The sink clock controls the timing of passing words to the data sink.
[0091] Sink Ready - This trace goes high at the start of each sink clock cycle and indicates when the transmission of words to the sink starts.
[0092] Buffer Request - This trace goes high when the sink ready trace first goes high after receiving the buffer packet start signal.
[0093] Buffer Acknowledge - This trace goes high when the arbiter 120 enables access to the buffer for the sink.
[0094] Buffer Actual Rank - This trace represents the actual rank of the buffer. As shown in Figure 7, the actual rank decays (increases) for each word transmitted according to a specific decay function of the buffer.
[0095] Buffer Absolute Rank - This trace represents the actual rank of the buffer truncated to the nearest integer.
[0096] Sink Data - This trace represents the actual data word being transmitted to the sink.
[0097] Sink Data Valid - This trace goes high to indicate each sink clock cycle where sink data, sink packet start, and sink packet end are valid.
[0098] Sink Packet Start - This trace goes high while the first word of the packet is being sent to the sink.
[0099] Sink Packet End - This trace goes high while the last word of the packet is being sent to the sink.
[0100] In the example shown in FIGS. 7A and 7B, buffer [1] is configured to have a constant decay function of δ1(x)=0.5*x and a constant recovery function of ρ1(x)=0.25*x. As shown in FIGS. 7A and 7B, the arrival of a packet at time A triggers the buffer to request access to the sink in the sink clock domain at time B. At time C, arbiter 120 permits access to buffer [1] to send data to the sink. At time D, the actual rank of the buffer starts to decay for each word sent to the sink according to the decay function of that buffer. At time E, since the actual rank of the buffer is equal to 1.0, the absolute rank of the buffer increases. However, no other buffer is requesting transmission. Therefore, arbiter 120 continues to permit the transmission of data by buffer [1]. At time F, buffer [1] notifies the end of the transmitted packet, so arbiter 120 can freely select a new buffer for the next clock cycle. At time G, the actual rank of buffer [1] starts to recover according to its recovery function because the buffer no longer transmits and the system has reached the next sink clock cycle.
[0101] FIGS. 8A and 8B show timing diagrams highlighting the basic operation of the CBLC QoS arbitration system 100 when there is a collision between two packets arriving at buffer [1] and buffer [2] relatively simultaneously. FIGS. 8A and 8B include signal traces over the following time progression, as shown on the x-axis. FIG. 8B temporally overlaps FIG. 8A and occurs immediately after FIG. 8A.
[0102] Source clock [1] - This trace represents the high / low state of the source clock of buffer [1]. The source clock controls the timing at which packets are received in buffer [1].
[0103] Buffer data [1] - This trace identifies the individual words within the packet received in buffer [1]. As shown in Figure 8, the packet received in buffer [1] has four words A1 to A4.
[0104] Buffer data valid [1] - This trace is high when buffer [1] is receiving valid data.
[0105] Buffer packet start [1] - This trace goes high when a packet arrives at buffer [1].
[0106] Buffer packet end [1] - This trace goes low when the valid packet in buffer [1] ends.
[0107] Source clock [2] - This trace represents the high / low state of the source clock of buffer [2]. The source clock controls the timing at which packets are received in buffer [2].
[0108] Buffer data [2] - This trace identifies the individual words within the packet received in buffer [2]. As shown in Figure 8, the packet received in buffer [2] has four words B1 to B4.
[0109] Buffer data valid [2] - This trace is high when buffer [2] is receiving valid data.
[0110] Buffer packet start [2] - This trace goes high when a packet arrives at buffer [2].
[0111] Buffer Packet End [2] - This trace goes low when the valid packet in buffer [2] ends.
[0112] Sink Clock - This trace represents the high / low state of the sink clock. The sink clock controls the timing for passing words to the data sink.
[0113] Sink Ready - This trace goes high at the start of each sink clock cycle and indicates when the transmission of words to the sink starts.
[0114] Cut Signal - This trace goes high when the arbiter 120 sends a cut signal to the buffer being cut.
[0115] Buffer Request [1] - This trace goes high when the sink ready trace first goes high after a buffer packet start signal is received from buffer [1].
[0116] Buffer Acknowledge [1] - This trace goes high when the arbiter 120 enables access to buffer [1] for the sink.
[0117] Buffer Actual Rank [1] - This trace represents the actual rank of buffer [1]. As shown in Figure 8, the actual rank decays (increases) for each word transmitted according to a specific attenuation function of the buffer.
[0118] Buffer Absolute Rank [1] - This trace represents the actual rank of buffer [1] rounded down to the nearest integer.
[0119] Buffer Request [2] - This trace goes high when the sink ready trace first goes high after a buffer packet start signal is received from buffer [2].
[0120] Buffer Acknowledge [2] - This trace goes high when the arbiter 120 enables access to buffer [2] for the sink.
[0121] Buffer actual rank [2] - This trace represents the actual rank of buffer [2]. As shown in FIG. 8, the actual rank decays (increases) for each word transmitted according to a specific decay function of the buffer.
[0122] Buffer absolute rank [2] - This trace represents the actual rank of buffer [2] rounded down to the nearest integer.
[0123] Sink data - This trace represents the actual data word being transmitted to the sink.
[0124] Sink data valid - This trace goes high to indicate each sink clock cycle for which sink data, sink packet start, and sink packet end are valid.
[0125] Sink packet start - This trace goes high while the first word of the packet is being transmitted to the sink.
[0126] Sink packet end - This trace goes high while the last word of the packet is being transmitted to the sink.
[0127] In the examples shown in FIGS. 8A and 8B, the decay function of buffer [1] is set to δ1(x) = 0.2 * x, and the decay function of buffer [2] is set to δ2(x) = 0.5 * x. The recovery functions of both buffers are set the same, ρ1(x) = ρ2(x) = 0.2 * x.
[0128] As shown in FIGS. 8A and 8B, the arrival of a packet at buffer [1] at time A1 and the arrival of a packet at buffer [2] at time A2 trigger the buffer to request access to the sink in the sink clock domain at time B. Both requests arrive at arbiter 120 simultaneously. Also, as described above, arbiter 120 determines that both buffers have the same absolute rank. Thus, the WPR scheduler 140 of arbiter 120 randomly selects one of the buffers that provides access to the sink according to WPT162 as described above. In the example of FIGS. 8A and 8B, as shown at time C, buffer [2] is selected to be transmitted first.
[0129] When buffer [2] starts transmitting the second word, the absolute rank of buffer [2] increases to 1 at time D. However, since buffer [1] is not transmitting a word, the absolute rank of buffer [1] remains zero. Thus, the absolute rank of buffer [2] is higher than the absolute rank of buffer [1] before the transmission of the packet is completed (only two of the four words B1 and B2 of the packet have been transmitted). Arbiter 120 sends a cut signal to buffer [2] at time E to cut the packet from buffer [2] and allow buffer [1] to start transmitting instead, as indicated by buffer confirmation [1].
[0130] At time F, the actual rank of buffer [2] becomes less than 1, and since the absolute rank is determined by rounding down the actual rank to the next integer, the absolute rank of buffer [2] reverts to 0. However, at time F, since the ranks of both buffer [1] and buffer [2] are 0, arbiter 120 continues to permit transmission to buffer [1] because buffer [1] still has the lowest rank and is tied. Then, at time G, buffer [1] transmits the last word A4 to complete the transmission of the packet. Since buffer [2] is now the only buffer requesting access to the sink, arbiter 120 returns access to the sink to buffer [2], as indicated by the buffer confirmation [2] signal being high.
[0131] Figures 9A and 9B show the timing diagrams of the operation of the CBLC QoS arbitration system 100 for WPR collision examples in a 4-buffer system when CAE is not valid. Figures 9A and 9B include signal traces as the following time elapses, as shown on the x-axis. Figure 9B overlaps with Figure 9A in time and occurs immediately after Figure 9A.
[0132] Sink clock - This trace represents the high / low state of the sink clock. The sink clock controls the timing of passing words to the data sink.
[0133] Sink ready - This trace goes high at the start of each sink clock cycle and indicates when the transmission of words to the sink starts.
[0134] Cut signal - This trace goes high when the arbiter 120 transmits a cut signal to the buffer being cut.
[0135] Buffer request [1] - This trace goes high when the sink ready trace first goes high after a buffer packet start signal is received from buffer [1].
[0136] Buffer request [2] - This trace goes high when the sink ready trace first goes high after a buffer packet start signal is received from buffer [2].
[0137] Buffer request [3] - This trace goes high when the sink ready trace first goes high after a buffer packet start signal is received from buffer [3].
[0138] Buffer request [4] - This trace goes high when the sink ready trace first goes high after a buffer packet start signal is received from buffer [4].
[0139] Buffer Check [1] - This trace goes high when Arbiter 120 can access Buffer [1] as a sink.
[0140] Buffer Check [2] - This trace goes high when Arbiter 120 can access Buffer [2] as a sink.
[0141] Buffer Check [3] - This trace goes high when Arbiter 120 can access Buffer [3] as a sink.
[0142] Buffer Check [4] - This trace goes high when Arbiter 120 can access Buffer [4] as a sink.
[0143] Buffer Actual Rank [1] - This trace represents the actual rank of Buffer [1]. As shown in Figure 9, the actual rank decays (increases) for each word transmitted according to a specific attenuation function of the buffer.
[0144] Buffer Actual Rank [2] - This trace represents the actual rank of Buffer [2]. As shown in Figure 9, the actual rank decays (increases) for each word transmitted according to a specific attenuation function of the buffer.
[0145] Buffer Actual Rank [3] - This trace represents the actual rank of Buffer [3]. As shown in Figure 9, the actual rank decays (increases) for each word transmitted according to a specific attenuation function of the buffer.
[0146] Buffer Actual Rank [4] - This trace represents the actual rank of Buffer [4]. As shown in Figure 9, the actual rank decays (increases) for each word transmitted according to a specific attenuation function of the buffer.
[0147] Buffer Absolute Rank [1] - This trace represents the actual rank of Buffer [1] rounded down to the nearest integer.
[0148] Buffer Absolute Rank [2] - This trace represents the actual rank of Buffer [2] rounded down to the nearest integer.
[0149] Buffer Absolute Rank [3] - This trace represents the actual rank of Buffer [3] rounded down to the nearest integer.
[0150] Buffer Absolute Rank [4] - This trace represents the actual rank of Buffer [4] rounded down to the nearest integer.
[0151] Lowest Rank Buffer - This trace indicates which buffer is currently at the lowest rank.
[0152] Sink Data - This trace represents the actual data word being sent to the sink.
[0153] Sink Data Valid - This trace goes high to indicate each sink clock cycle where sink data, sink packet start, and sink packet end are valid.
[0154] Sink Packet Start - This trace goes high while the first word of the packet is being sent to the sink.
[0155] Sink Packet End - This trace goes high while the last word of the packet is being sent to the sink.
[0156] As shown in both FIGS. 9A and 9B, prior to time A, Buffer [1] is sending words to the sink as indicated by the increase in Buffer Real Rank [1] and the sink data. Prior to time A, the absolute rank of Buffer [1] is considered zero. However, at time A, since Buffer Real Rank [1] has risen to 1, the Buffer Absolute Rank [1] has decayed to 1. As indicated by the trace of Buffer Request [2] going high, prior to time A, Buffer [2] has already made a request to send data to the sink. However, the other buffers have not yet requested access to the sink.
[0157] As a result, at time A, both buffer [1] and buffer [2] make buffer requests to send data to the sink, and as shown in the trace of the lowest rank buffer at time B, both buffer [1] and buffer [2] have the same absolute rank. However, since buffer [1] has already sent data to the sink, buffer [1] can continue to send data to the sink, and buffer [2] waits.
[0158] As indicated by the trace of buffer request [3] going high, at time C, buffer [3] requests to send data to the sink. As shown in the trace of buffer absolute rank [3], the absolute rank of buffer [3] is also 1. As a result, as shown at D in the trace of the lowest rank buffer, all of buffer [1], buffer [2], and buffer [3] are currently tied as the lowest rank buffer of rank 1. However, buffer [1] has already sent data to the sink and can continue to send data to the sink.
[0159] However, at time F, buffer [1] starts sending the last word of its packet. As a result, as shown at E, the trace of buffer request [1] goes low. Furthermore, since buffer [1] stops attempting to send data to the sink, at time F, buffer [1] is removed from the trace of the lowest rank buffer. Now, buffer [2] and buffer [3] are the lowest rank buffers.
[0160] In F, since there are two buffers that have the lowest priority and request to send data to the sink, and it is necessary to select one buffer to send data to the sink, the WPR scheduler 140 determines that there is a collision. As described above, the WPR scheduler 140 randomly selects one of buffer [2] and buffer [3] based on their relative weights in WPT162. In the examples of FIGS. 9A and 9B, the WPR scheduler 140 has randomly selected buffer [3] as the buffer to be transmitted, and as shown by the trace of buffer confirmation [3] being high at G, the WPR scheduler 140 sends a signal to buffer [3]. Next, as indicated by the trace of the sink data and the increase in buffer actual rank [3], buffer [3] starts transmitting words to the sink. The increase in buffer actual rank [3] is performed according to the individual attenuation equation of buffer [3]. Further, it is shown that buffer actual rank [1] decreases according to the recovery equation of buffer [1] for each cycle in which buffer [1] does not transmit a word.
[0161] FIGS. 10A and 10B show timing diagrams of the operation of the CBLC QoS arbitration system 100 for a WPR collision example in a four-buffer system when CAE is enabled. FIG. 10B overlaps with FIG. 10A in time and occurs immediately after FIG. 10A. FIGS. 10A and 10B include the same signal traces over time as FIGS. 9A and 9B and add the following signal traces.
[0162] CAE interval - This trace indicates the credit assignment engine interval. The CAE grants credits at the end of each CAE interval.
[0163] Buffer CAE credit [1] - This trace indicates the total accumulated CAE credit of buffer [1].
[0164] Buffer CAE credit [2] - This trace indicates the total accumulated CAE credit of buffer [2].
[0165] Buffer CAE Credit [3] - This trace indicates the total accumulated CAE credit of Buffer [3].
[0166] Buffer CAE Credit [4] - This trace indicates the total accumulated CAE credit of Buffer [4].
[0167] In the examples of FIGS. 10A and 10B, the same operations and data collisions occur as those shown above in FIGS. 9A and 9B. That is, at time A, both Buffer [1] and Buffer [2] make buffer requests to send data to the sink, and both Buffer [1] and Buffer [2] have the same absolute rank, as shown in the trace of the lowest rank buffer at B. However, since Buffer [1] has already sent data to the sink, Buffer [1] can continue to send data to the sink, while Buffer [2] waits.
[0168] At time C, as indicated by the trace of Buffer Request [3] going high, Buffer [3] requests to send data to the sink. The absolute rank of Buffer [3] is also 1, as shown in the trace of Buffer Absolute Rank [3]. As a result, as shown at D in the trace of the lowest rank buffer, all of Buffer [1], Buffer [2], and Buffer [3] are now tied at the lowest rank buffer of rank 1. However, Buffer [1] has already sent data to the sink and can continue to send data to the sink.
[0169] However, at time F, Buffer [1] starts sending the last word of its packet. As a result, the trace of Buffer Request [1] goes low, as shown at E. Further, since Buffer [1] stops attempting to send data to the sink, Buffer [1] is removed from the trace of the lowest rank buffer at F. Now, Buffer [2] and Buffer [3] are the lowest rank buffers.
[0170] In F, the WPR scheduler 140 determines that there is a collision because there are two buffers with the lowest priority that require data to be sent to the sink, and one buffer for sending data to the sink needs to be selected. However, in FIGS. 10A and 10B, instead of randomly selecting a buffer based on WPT162, the WPR scheduler 140 employs CAE164.
[0171] Regarding the trace representing the operation of CAE, in H, buffer [1] is sending data to the sink, but buffer [2], although it has requested transmission to the sink (indicated by the high trace of buffer request [2]), is not permitted to send data to the sink during the current CAE interval. As a result, as shown in buffer CAE credit [2] in I, CAE164 assigns a credit to buffer [2]. Further, during the next CAE interval, buffer [2] cannot be sent because buffer [1] is still in the process of sending. As a result, CAE164 assigns an additional credit to buffer [2], as shown in buffer CAE credit [2] at the same time as C and D. The buffer CAE credit [2] has now risen to 2.
[0172] However, in C, buffer [3] requests access to the sink. As a result, in the next CAE interval in J, although both buffer [2] and buffer [3] request access to the sink, they are not permitted to send data to the sink. When CAE is enabled, buffer [2] automatically accumulates credits every interval during which its request line is asserted, and the request line of buffer [3] is de-asserted. However, in J, when buffer [3] also asserts its request line, CAE164 uses the weighted priority table 162 to select either buffer [2] or buffer [3] and allocate credits. In one embodiment, due to their relative probability weights set in the weighted priority table 162, every interval, buffer [2] has a 40% probability of being allocated credits, and buffer [3] has a 60% probability. As shown in FIGS. 10A and 10B, in K, buffer [3] is randomly selected by CAE164 and credits are granted as shown in buffer CAE credit [3]. However, since buffer [2] still cannot be sent to the sink, as a result, it retains the current credit value 2 as shown in buffer CAE credit [2].
[0173] As described above, in F, buffer [1] completes the transmission of the packet, and the WPR scheduler 140 determines that there is a collision between buffer [2] and buffer [3] because there are two buffers with the lowest priority requesting to send data to the sink and it is necessary to select one buffer to send data to the sink. In this example, the WPR scheduler 140 checks the number of credits accumulated by each buffer (shown in buffer CAE credit) and then resolves the collision by selecting the buffer with the largest number of credits to send data to the sink next. If the maximum number of accumulated credits is the same among two or more buffers, the WPR scheduler 140 uses the weighted priority table 162 to randomly select a winning buffer from among the ties. By doing so, the relative probabilities among the selected buffers are maintained again.
[0174] As shown in FIGS. 10A and 10B, at time F, the buffer CAE credit [2] is greater than the buffer CAE credit [3]. As a result, the WPR scheduler 140 transmits a buffer confirmation [2] signal to buffer [2] as shown in G, and buffer [2] becomes able to transmit data to the sink. Further, since buffer [2] becomes able to transmit data to the sink, the CAE credit of buffer [2] is cleared to zero as shown in M.
[0175] Although specific elements, embodiments, and uses of the present invention have been shown and described, it will be understood that the present invention is not limited thereto since modifications can be made by those skilled in the art, particularly in light of the above teachings. Accordingly, it is intended to cover such modifications within the scope of the appended claims and to incorporate those features within the spirit and scope of the present invention.
[0176] [Appendix] [Concept 1] A first buffer that receives a first packet including at least one first packet word, the first buffer being associated with the actual rank of the first buffer, A second buffer that receives a second packet including at least one second packet word, the second buffer being associated with the actual rank of the second buffer, A data sink that can receive a data word from either the first buffer or the second buffer, A buffer rank calculator that stores the actual ranks of the first buffer and the second buffer, A buffer selector that selects which of the first buffer and the second buffer to permit the transmission of words to the sink, comprising The actual rank of the first buffer increases according to a first stored attenuation equation for each first packet word transmitted from the first buffer to the sink, The actual rank of the first buffer decreases to the minimum value of a predetermined minimum rank of the first buffer according to the first stored recovery equation for each sink transmission cycle in which the first buffer does not transmit a first packet word to the sink. The actual rank of the second buffer increases according to the second stored attenuation equation for each second packet word transmitted to the sink by the second buffer. The actual rank of the second buffer decreases to the minimum value of a predetermined minimum rank of the second buffer according to the second stored recovery equation for each sink transmission cycle in which the second buffer does not transmit a second packet word to the sink. The buffer rank calculator determines the absolute rank of the first buffer by rounding down the actual rank of the first buffer to the next integer. The buffer rank calculator determines the absolute rank of the second buffer by rounding down the actual rank of the second buffer to the next integer. The buffer selector selects the first buffer when the absolute rank of the first buffer is less than the absolute rank of the second buffer, and selects the second buffer when the absolute rank of the second buffer is less than the absolute rank of the first buffer. Buffer arbitration communication system. [Concept 2] The first stored attenuation equation is different from the second stored attenuation equation. The system according to Concept 1. [Concept 3] The first stored recovery equation is different from the second stored recovery equation. The system according to Concept 1. [Concept 4] The predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer. The system according to Concept 1. [Concept 5] Further includes a weighted priority random (WPR) scheduler. The WPR scheduler includes a weighted priority table, The weighted priority table includes a selection probability of the first buffer and a selection probability of the second buffer, The system according to Concept 1. [Concept 6] When the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler randomly selects which of the first buffer and the second buffer to permit the transmission of data to the sink using the selection probability of the first buffer and the selection probability of the second buffer, The system according to Concept 5 [Concept 7] Further includes a credit accumulation engine (CAE), The CAE includes a credit entry for the first buffer and a credit entry for the second buffer, When the second buffer transmits data to the sink and the first buffer cannot transmit data to the sink, the CAE grants credit to the first buffer by incrementing the credit entry of the first buffer, When the first buffer transmits data to the sink and the second buffer cannot transmit data to the sink, the CAE grants credit to the second buffer by incrementing the credit entry of the second buffer, The system according to Concept 5. [Concept 8] When neither the first buffer nor the second buffer has transmitted data to the sink and the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler compares the credit entry of the first buffer with the credit entry of the second buffer and permits communication with the sink for the buffer having the higher credit entry, The system according to Concept 7. [Concept 9] When the credit entry of the first buffer is equal to the credit entry of the second buffer, the WPR scheduler randomly selects which of the first buffer and the second buffer to permit data transmission to the sink using the selection probability of the first buffer and the selection probability of the second buffer. The system according to Concept 8. [Concept 10] The credit given to the first buffer is different from the credit given to the second buffer. The system according to Concept 7. [Concept 11] Receiving a first packet including at least one first packet word in a first buffer associated with the actual rank of the first buffer; Receiving a second packet including at least one second packet word in a second buffer associated with the actual rank of the second buffer; Providing a data sink configured to arbitrarily receive data words from either the first buffer or the second buffer; Storing the actual ranks of the first buffer and the second buffer in a buffer rank calculator; Incrementing the actual rank of the first buffer according to a first stored decay equation for each first packet word transmitted to the sink by the first buffer; Decreasing the actual rank of the first buffer to the minimum value of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmission cycle in which the first buffer has not transmitted a first packet word to the sink; Incrementing the actual rank of the second buffer according to a second stored decay equation for each second packet word transmitted to the sink by the second buffer; For each sink transmission cycle in which the second buffer is not transmitting a second packet word to the sink, decreasing the actual rank of the second buffer to the minimum value of a predetermined minimum rank of the second buffer according to a second stored recovery equation; Determining the absolute rank of the first buffer by rounding down the actual rank of the first buffer to the next integer using the buffer rank calculator; Determining the absolute rank of the second buffer by rounding down the actual rank of the second buffer to the next integer using the buffer rank calculator; Selecting, using a buffer selector, which of the first buffer and the second buffer to permit transmission of words to the sink; and The buffer selector selects the first buffer when the absolute rank of the first buffer is less than the absolute rank of the second buffer, and selects the second buffer when the absolute rank of the second buffer is less than the absolute rank of the first buffer. A method for arbitration between buffers. [Concept 12] The first stored attenuation equation is different from the second stored attenuation equation. The method according to Concept 11. [Concept 13] The first stored recovery equation is different from the second stored recovery equation. The method according to Concept 11. [Concept 14] The predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer. The method according to Concept 11. [Concept 15] Further comprising providing a weighted priority random (WPR) scheduler; The WPR scheduler includes a weighted priority table; The weighted priority table includes a selection probability of the first buffer and a selection probability of the second buffer. The method according to Concept 11. [Concept 16] When the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler randomly selects, using the selection probability of the first buffer and the selection probability of the second buffer, which of the first buffer and the second buffer to permit the transmission of data to the sink. The method according to Concept 15. [Concept 17] Further comprising providing a credit accumulation engine (CAE). The CAE includes a credit entry for a first buffer and a credit entry for a second buffer. When the second buffer transmits data to the sink and the first buffer cannot transmit data to the sink, the first buffer is credited by incrementing the credit entry of the first buffer using the CAE. When the first buffer transmits data to the sink and the second buffer cannot transmit data to the sink, the second buffer is credited by incrementing the credit entry of the second buffer using the CAE. The method according to Concept 15. [Concept 18] When neither the first buffer nor the second buffer has transmitted data to the sink and the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler compares the credit entry of the first buffer with the credit entry of the second buffer and permits communication with the sink for the buffer having the higher credit entry. The method according to Concept 17. [Concept 19] When the credit entry of the first buffer is equal to the credit entry of the second buffer, the WPR scheduler randomly selects which of the first buffer and the second buffer to permit transmission of data to the sink, using the selection probability of the first buffer and the selection probability of the second buffer. The method according to concept 18. [Concept 20] The credit given to the first buffer is different from the credit given to the second buffer. The method according to concept 17. [Concept 21] A first buffer that receives a first packet including at least a first word of the first packet and a second word of the first packet, the first buffer being associated with an actual rank of the first buffer, A second buffer that receives a second packet including at least one second packet word, the second buffer being associated with an actual rank of the second buffer, A data sink that can receive a data word from either the first buffer or the second buffer, A buffer rank calculator that stores the actual rank of the first buffer and the actual rank of the second buffer, A buffer selector that selects which of the first buffer and the second buffer to permit transmission of words to the data sink, comprising The actual rank of the first buffer increases according to a first stored decay equation for each first packet word transmitted by the first buffer to the data sink. The actual rank of the first buffer decreases to the minimum value of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmission cycle in which the first buffer is not transmitting a first packet word to the data sink. The actual rank of the second buffer increases according to a second stored attenuation equation for each second packet word transmitted to the data sink by the second buffer, The second stored attenuation equation is different from the first stored attenuation equation, The actual rank of the second buffer decreases to the minimum value of a predetermined minimum rank of the second buffer according to a second stored recovery equation for each sink transmission cycle in which the second buffer is not transmitting a second packet word to the data sink, The buffer rank calculator determines the absolute rank of the first buffer by rounding down the actual rank of the first buffer to the next integer, The buffer rank calculator determines the absolute rank of the second buffer by rounding down the actual rank of the second buffer to the next integer, When the first buffer is transmitting the first word of the first packet to the data sink and the buffer selector determines that the absolute rank of the second buffer has become smaller than the absolute rank of the first buffer, the buffer selector stops the transmission of the first packet to the first buffer prior to transmitting the second word of the first packet, Buffer arbitration communication system. [Concept 22] After the buffer selector stops the transmission of the first packet to the first buffer, the buffer selector permits the start of the transmission of the second packet to the data sink to the second buffer, The system according to Concept 21. [Concept 23] The first stored recovery equation is different from the second stored recovery equation, The system according to Concept 21. [Concept 24] The predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer, The system according to Concept 21. [Concept 25] Further includes a weighted priority random (WPR) scheduler, The WPR scheduler includes a weighted priority table, The weighted priority table includes the selection probability of the first buffer and the selection probability of the second buffer, The system according to Concept 21. [Concept 26] When the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler uses the selection probability of the first buffer and the selection probability of the second buffer to randomly select which of the first buffer and the second buffer to permit the transmission of data to the data sink. The system according to Concept 25 [Concept 27] Further includes a credit accumulation engine (CAE), The CAE includes a credit entry for the first buffer and a credit entry for the second buffer, When the second buffer transmits data to the data sink and the first buffer cannot transmit data to the data sink, the CAE credits the first buffer by incrementing the credit entry of the first buffer. When the first buffer transmits data to the data sink and the second buffer cannot transmit data to the data sink, the CAE credits the second buffer by incrementing the credit entry of the second buffer. The system according to Concept 25. [Concept 28] When neither the first buffer nor the second buffer has transmitted data to the data sink and the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler compares the credit entry of the first buffer with the credit entry of the second buffer and permits communication with the data sink for the buffer having the higher credit entry. The system according to concept 27. [Concept 29] When the credit entry of the first buffer is equal to the credit entry of the second buffer, the WPR scheduler randomly selects, using the selection probability of the first buffer and the selection probability of the second buffer, which of the first buffer and the second buffer to permit the transmission of data to the data sink. The system according to concept 28. [Concept 30] The credit given to the first buffer is different from the credit given to the second buffer. The system according to concept 27. [Concept 31] Receiving a first packet including at least a first word of the first packet and a second word of the first packet in a first buffer associated with the actual rank of the first buffer; Receiving a second packet including at least one second packet word in a second buffer associated with the actual rank of the second buffer; Providing a data sink configured to arbitrarily receive data words from either the first buffer or the second buffer; Storing the actual ranks of the first buffer and the second buffer in a buffer rank calculator; For each first packet word transmitted by the first buffer to the data sink, increasing the actual rank of the first buffer according to a first stored attenuation equation; For each sink transmission cycle in which the first buffer has not transmitted a first packet word to the data sink, decreasing the actual rank of the first buffer to the minimum value of a predetermined minimum rank of the first buffer according to a first stored recovery equation; For each second packet word transmitted to the data sink by the second buffer, increasing the actual rank of the second buffer according to a second stored attenuation equation, wherein the second stored attenuation equation is different from the first stored attenuation equation; For each sink transmission cycle in which the second buffer is not transmitting a second packet word to the data sink, decreasing the actual rank of the second buffer to the minimum value of a predetermined minimum rank of the second buffer according to a second stored recovery equation; Determining the absolute rank of the first buffer by truncating the actual rank of the first buffer to the next integer using the buffer rank calculator; Determining the absolute rank of the second buffer by truncating the actual rank of the second buffer to the next integer using the buffer rank calculator; Selecting, using a buffer selector, which of the first buffer and the second buffer to permit transmission of words to the data sink; When the first buffer is transmitting the first word of the first packet to the data sink and the buffer selector determines that the absolute rank of the second buffer is less than the absolute rank of the first buffer, the buffer selector stops the transmission of the first packet to the first buffer prior to transmitting the second word of the first packet; A method for arbitration between buffers. [Concept 32] After the buffer selector stops the transmission of the first packet to the first buffer, starting the transmission of the second packet to the data sink by using the buffer selector; The method according to Concept 31. [Concept 33] The first stored recovery equation is different from the second stored recovery equation; The method according to Concept 31. [Concept 34] The predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer. The method according to Concept 31. [Concept 35] Further comprising providing a weighted priority random (WPR) scheduler. The WPR scheduler includes a weighted priority table. The weighted priority table includes a selection probability of the first buffer and a selection probability of the second buffer. The method according to Concept 31. [Concept 36] When the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler uses the selection probability of the first buffer and the selection probability of the second buffer to randomly select whether to permit the transmission of data to the data sink to either the first buffer or the second buffer. The method according to Concept 31. [Concept 37] Further comprising providing a credit accumulation engine (CAE). The CAE includes a credit entry for the first buffer and a credit entry for the second buffer. When the second buffer transmits data to the data sink and the first buffer cannot transmit data to the data sink, the CAE is used to increment the credit entry of the first buffer to grant credit to the first buffer. When the first buffer transmits data to the data sink and the second buffer cannot transmit data to the data sink, the CAE is used to increment the credit entry of the second buffer to grant credit to the second buffer. The method according to Concept 35. [Concept 38] Neither the first buffer nor the second buffer has sent data to the data sink. If the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler compares the credit entry of the first buffer with the credit entry of the second buffer and permits communication with the data sink through the buffer having the higher credit entry. The method according to Concept 37. [Concept 39] If the credit entry of the first buffer is equal to the credit entry of the second buffer, the WPR scheduler randomly selects, using the selection probability of the first buffer and the selection probability of the second buffer, which of the first buffer and the second buffer to permit data transmission to the data sink. The method according to Concept 38. [Concept 40] The credit given to the first buffer is different from the credit given to the second buffer. The method according to Concept 37.
Claims
1. A first buffer that receives a first packet including at least a first word and a second word of the first packet, the first buffer being associated with an actual rank of the first buffer, and A second buffer that receives a second packet including at least one second packet word, the second buffer being associated with an actual rank of the second buffer, and A data sink that can receive data words from either the first buffer or the second buffer, and A buffer rank calculator that stores the actual rank of the first buffer and the actual rank of the second buffer, and A buffer selector that selects which of the first buffer and the second buffer to permit transmission of words to the data sink, and Comprising The actual rank of the first buffer increases according to a first stored attenuation equation for each first packet word transmitted by the first buffer to the data sink, The actual rank of the first buffer decreases to a minimum value of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmission cycle in which the first buffer is not transmitting a first packet word to the data sink, The actual rank of the second buffer increases according to a second stored attenuation equation for each second packet word transmitted by the second buffer to the data sink, The second stored attenuation equation is different from the first stored attenuation equation, The actual rank of the second buffer decreases to a minimum value of a predetermined minimum rank of the second buffer according to a second stored recovery equation for each sink transmission cycle in which the second buffer is not transmitting a second packet word to the data sink, The buffer rank calculator determines the absolute rank of the first buffer by rounding down the actual rank of the first buffer to the next integer, The buffer rank calculator determines the absolute rank of the second buffer by rounding down the actual rank of the second buffer to the next integer, The buffer selector selects the first buffer when the absolute rank of the first buffer is less than the absolute rank of the second buffer, and selects the second buffer when the absolute rank of the second buffer is less than the absolute rank of the second buffer, When the first buffer transmits a first packet word to the data sink and the transmission is carried out over a plurality of sink transmission cycles, the actual rank of the second buffer decreases in each cycle of the plurality of sink transmission cycles according to the second stored recovery equation. Buffer arbitration communication system. According to claim 2, when the second buffer transmits a second packet word to the data sink and the transmission is carried out over a plurality of sink transmission cycles, the actual rank of the first buffer decreases in each cycle of the plurality of sink transmission cycles according to the first stored recovery equation. The system according to claim 1. According to claim 3 The first stored recovery equation is different from the second stored recovery equation. The system according to claim 1. According to claim 4 The predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer. The system according to claim 1. According to claim 5 Further comprising a weighted priority random (WPR) scheduler. The WPR scheduler includes a weighted priority table. The weighted priority table includes a selection probability of the first buffer and a selection probability of the second buffer. The system according to claim 1. According to claim 6 When the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler randomly selects whether to permit the transmission of data to the data sink to either the first buffer or the second buffer using the selection probability of the first buffer and the selection probability of the second buffer. The system according to claim 5 According to claim 7 Further comprising a credit accumulation engine (CAE). The CAE includes a credit entry of the first buffer and a credit entry of the second buffer. The CAE grants credit to the first buffer by incrementing the credit entry of the first buffer when the second buffer transmits data to the data sink and the first buffer cannot transmit data to the data sink. When the CAE determines that the first buffer can send data to the data sink while the second buffer cannot, it credits the second buffer by incrementing the credit entry of the second buffer. The system according to claim 5.
8. When neither the first buffer nor the second buffer is sending data to the data sink and the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler compares the credit entry of the first buffer with the credit entry of the second buffer and permits the buffer with the higher credit entry to communicate with the data sink. The system according to claim 7.
9. When the credit entry of the first buffer is equal to the credit entry of the second buffer, the WPR scheduler randomly selects whether to permit the first buffer or the second buffer to send data to the data sink, using the selection probabilities of the first buffer and the second buffer. The system according to claim 8.
10. The credit granted to the first buffer is different from the credit granted to the second buffer. The system according to claim 7.
11. Receiving a first packet including at least a first word and a second word of the first packet in a first buffer associated with the actual rank of the first buffer; Receiving a second packet including at least one second packet word in a second buffer associated with the actual rank of the second buffer; Providing a data sink configured to arbitrarily receive data words from either the first buffer or the second buffer; Storing the actual ranks of the first buffer and the second buffer in a buffer rank calculator; Incrementing the actual rank of the first buffer according to a first stored attenuation equation for each first packet word transmitted to the data sink by the first buffer; For each sink transmission cycle in which the first buffer is not transmitting a first packet word to the data sink, decreasing the actual rank of the first buffer to the minimum value of a predetermined minimum rank of the first buffer according to a first stored recovery equation; For each second packet word transmitted to the data sink by the second buffer, increasing the actual rank of the second buffer according to a second stored attenuation equation, wherein the second stored attenuation equation is different from the first stored attenuation equation; For each sink transmission cycle in which the second buffer is not transmitting a second packet word to the data sink, decreasing the actual rank of the second buffer to the minimum value of a predetermined minimum rank of the second buffer according to a second stored recovery equation; Determining the absolute rank of the first buffer by rounding down the actual rank of the first buffer to the next integer using the buffer rank calculator; The first stored recovery equation is different from the second stored recovery equation, The method according to claim 11.
14. The predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer, The method according to claim 11.
15. Further comprising providing a weighted priority random (WPR) scheduler, The WPR scheduler includes a weighted priority table, The weighted priority table includes a selection probability of a first buffer and a selection probability of a second buffer, The method according to claim 11.
16. When the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler uses the selection probability of the first buffer and the selection probability of the second buffer to randomly select whether to permit the transmission of data to the data sink to either the first buffer or the second buffer. The method according to claim 15.
17. Further comprising providing a credit accumulation engine (CAE), The CAE includes a credit entry of a first buffer and a credit entry of a second buffer, When the second buffer transmits data to the data sink and the first buffer cannot transmit data to the data sink, the CAE is used to increment the credit entry of the first buffer to grant credit to the first buffer. When the first buffer transmits data to the data sink and the second buffer cannot transmit data to the data sink, the CAE is used to increment the credit entry of the second buffer to grant credit to the second buffer. The method according to claim 15.
18. When neither the first buffer nor the second buffer has transmitted data to the data sink and the absolute rank of the first buffer is equal to the absolute rank of the second buffer, the WPR scheduler compares the credit entry of the first buffer with the credit entry of the second buffer and permits communication with the data sink to the buffer having the higher credit entry. The method according to claim 17.
19. When the credit entry of the first buffer is equal to the credit entry of the second buffer, the WPR scheduler randomly selects, using the selection probability of the first buffer and the selection probability of the second buffer, which of the first buffer and the second buffer to permit the transmission of data to the data sink. The method according to claim 18. Claim 20 The credit given to the first buffer is different from the credit given to the second buffer. The method according to claim 17.