SYSTEM AND METHOD FOR LATENCY-CRITICAL QUALITY OF SERVICE USING CONTINUOUS BANDWIDTH CONTROL - Patent application
The CBLC QoS arbitration system addresses the challenge of efficient arbitration between high-bandwidth input channels and a low-bandwidth output channel by dynamically managing source ranks and intentionally corrupting or cutting packets, resulting in minimized latency and optimized data transmission.
Patent Information
- Application Number
- JP2023000436
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-02
- Filing Date
- 2023-01-05
- Publication Date
- 2025-04-07
- Estimated Expiration
- 2040-12-02
AI Technical Summary
Existing communication systems struggle with efficient arbitration between multiple high-bandwidth input channels and a single low-bandwidth output channel, leading to latency and inefficiencies in data transmission.
A Continuous Bandwidth Latency Critical (CBLC) Quality of Service (QoS) arbitration system that manages packetized data by calculating word-by-word access for multiple high-bandwidth sources to a low-bandwidth sink, and intentionally corrupts or cuts packets if a source loses priority during transmission.
The CBLC QoS arbitration system ensures fair and efficient bandwidth access by dynamically adjusting source ranks based on transmission and recovery functions, minimizing latency and optimizing data transmission.
Smart Images

Figure 0007657838000005 
Figure 0007657838000006 
Figure 0007657838000007
Abstract
Description
[Technical field]
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 942,299, filed December 2, 2019, entitled "SYSTEM AND METHOD FOR LATENCY-CRITICAL QUALITY OF SERVICE USING CONTINUOUS BANDWIDTH CONTROL," which is hereby incorporated by reference in its entirety. [Background technology]
[0002] The present invention relates generally to communication systems, and more particularly to communication systems that arbitrate access among multiple input channels to an output channel.
[0003] A prior art communication system may include multiple input channels and a single output channel. However, in the prior art, the multiple input channels receive a data packet that includes multiple data words. Once an arbitration decision is made as to which of the multiple input channels should be allowed to 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 packetized data bandwidth manager designed to arbitrate access between multiple high bandwidth input channels (sources) to one low bandwidth output channel (sink). The system calculates on a word-by-word basis which sources are granted access to the sink and will intentionally corrupt / cut packets if a source loses priority during transmission. Each source is associated with a rank that is recalculated for each data word. The rank is increased (decayed) for each data word sent by the source and decreased (recovered) for each sink clock cycle during which the source is unable to transmit to the sink. When a source buffer transmits enough words that its absolute rank value rises above that of another source buffer waiting to transmit, the system "cuts" the current packet by causing the transmit buffer to stop mid-packet and selects a lower ranked source buffer as the new buffer to transmit. In the case of multiple request buffers with the same rank, the system uses a weighted priority random scheduler to select the buffer. [Brief description of the drawings]
[0005] [Figure 1] 1 shows a block diagram of a CBLC QoS arbitration system according to one embodiment of the present invention. [Diagram 2] 1 shows a graphical representation of the buffer rank during decay and a graphical representation of the buffer rank during recovery. [Diagram 3] 2. FIG. 4 shows a graphical representation of the buffer rank during decay and a graphical representation of the buffer rank during recovery when using decay and recovery formulas different from those shown in FIG. [Figure 4] 4 shows example curves of buffer rank decay and recovery when the rank recovery adjustment system is disabled and enabled. [Diagram 5] 1 illustrates a flowchart of a decision flow for a WPR scheduler without CAE, according to an embodiment of the present invention. [Figure 6]1 illustrates a flowchart of a WPR scheduler decision flow when CAE is enabled, in accordance with an embodiment of the present invention. [Figure 7A] 1 shows a timing diagram highlighting the basic operation of the CBLC QoS arbitration system when the CBLC QoS arbitration system receives a signal packet in one buffer and other buffers are not transmitting or requesting transmission. [Figure 7B] 1 shows a timing diagram highlighting the basic operation of the CBLC QoS arbitration system when the CBLC QoS arbitration system receives a signal packet in one buffer and other buffers are not transmitting or requesting transmission. [Figure 8A] A timing diagram highlighting the basic operation of the CBLC QoS arbitration system when there is a collision between two packets that arrive relatively simultaneously at buffer [1] and buffer [2] is shown. [Figure 8B] A timing diagram highlighting the basic operation of the CBLC QoS arbitration system when there is a collision between two packets that arrive relatively simultaneously at buffer [1] and buffer [2] is shown. [Figure 9A] 13 shows a timing diagram of the operation of the CBLC QoS arbitration system for a WPR collision example in a four-buffer system when CAE is not enabled. [Figure 9B] 13 shows a timing diagram of the operation of the CBLC QoS arbitration system for a WPR collision example in a four-buffer system when CAE is not enabled. [Figure 10A] 13 shows a timing diagram of the operation of the CBLC QoS arbitration system for a WPR collision example in a four-buffer system when CAE is enabled. [Figure 10B] 13 shows a timing diagram of the operation of the CBLC QoS arbitration system for a WPR collision example in a four-buffer system when CAE is enabled. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0006] The Continuous Bandwidth Latency Critical (CBLC) Quality of Service (QoS) arbitration system is a packetized data bandwidth manager designed to arbitrate access between multiple high-bandwidth input channels (sources) to one lower-bandwidth output channel (sink). The CBLC QoS arbitration system is unique in that it performs a word-by-word calculation of which sources should be granted access to the sink, and will intentionally corrupt packets if a source loses priority during transmission. This differs from other QoS schemes, which typically operate at full-packet granularity and have no mechanism for corrupting packets to achieve minimal latency penalties when switching between sources.
[0007] Internally, each source writes packets to a dedicated CBLC QoS buffer. The CBLC QoS arbiter then decides which buffers to grant access to the sink based on rank values assigned to each buffer, with lower ranks having the highest priority. The actual rank of the buffer selected to send to the sink is recalculated for each data word sent, based on a configurable decay function. Conceptually, this is called rank decay. Conversely, the actual rank of each buffer not sending to the sink is recalculated for each word requested by the sink, based on a configurable recovery function (recovery of all buffers continues 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 cutting. When a source buffer transmits enough words to raise its absolute rank value above that of another source buffer waiting to transmit, the CBLC QoS arbiter "cuts" the currently ongoing packet by forcing the transmitting buffer to stop mid-packet and selecting a lower-ranked source buffer as the new buffer to transmit. When there are multiple request buffers with the same rank, the CBLC QoS arbitration system employs a novel implementation of a weighted priority random scheduler for buffer selection.
[0008] FIG. 1 illustrates a block diagram of a CBLC QoS arbitration system 100 according to an embodiment of the present invention. As illustrated in FIG. 1, the CBLC QoS arbitration system 100 includes source buffers 110-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 per-buffer buffer rank memories 170-176, 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, sink clocks 144, sink data 146, a sink ready signal 148 received from a data sink to indicate that the sink is ready to receive data, and a cut signal 149 sent to the data sink when a packet has been cut.
[0010] 1, identification information of the buffer requesting transmission of data to the sink is transmitted from the buffer selector 150 to the buffer rank calculator 130 as requested buffer information 152. Furthermore, the absolute rank 153 of each buffer is transmitted from the buffer rank memories 170-175 to the rank comparator 184.
[0011] Once buffer rank calculator 130 determines which of the buffers identified in request buffer information 152 are lowest ranked, buffer rank calculator 130 passes identities of the one or more lowest ranked buffers to WPR scheduler 140 as lowest ranked buffer information 154. Once WPR scheduler 140 determines which of the buffers identified in lowest ranked buffer information 154 should be made accessible to the sink, WPR scheduler 140 sends identities of the selected buffers to buffer selector 150 as send buffer information 156.
[0012] In addition, as described further below, each source buffer 110-116 may send a sink request 191 to the buffer selector 150 indicating that the individual buffer has a data packet to send to the sink. An individual buffer receives a buffer acknowledge signal 193 from the buffer selector 150 when the particular individual buffer is selected by the buffer selector 150 as the buffer that will send its data to the sink.
[0013] As will be further described below, the buffer selector 150 also transmits selected buffer information 195 to the buffer rank calculator 130 and the WPR scheduler 140. The selected buffer information 195 indicates which buffer is currently selected to provide data to the sink. Once a transmit buffer is selected by the WPR scheduler 140 and this information is passed to the buffer selector 150 to be used as the newly selected buffer, the selected buffer information 195 is then passed to each of the buffer rank memories 170-176. Each buffer rank calculator compares its own identification information to the selected buffer information 195 to determine decay or recovery information for that buffer. The decay / recovery information indicates whether the buffer is currently transmitting to the sink and therefore its actual rank should be decayed by the buffer rank calculator 130 according to that buffer's stored decay equation {right arrow over (E)} and whether the buffer is not currently transmitting to the sink and therefore its actual rank should be restored by the buffer rank calculator 130 according to their respective buffer's stored recovery equation to the minimum rank set for the respective buffer.
[0014] Turning now to the source buffers 110-116, the CBLC QoS arbitration system 100 is designed to support as many source channels as the overall system requirements require by implementing a source buffer per channel. A minimum of two source buffers is desirable, while the maximum number is limited only by the overall system performance requirements. Each source buffer is responsible for queuing packetized data and keeping track of the number of packets it has stored and the number of packets it can accept before it is considered full. The buffer achieves this by implementing a dual asynchronous FIFO system. One FIFO is used to store the actual data of the received packet, while the other FIFO is used to store the descriptor information, such as the start and end addresses of the packet 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 for the system or when the maximum number of packets has been stored (i.e., the descriptor FIFO is full). Another function of the source buffer is the ability to perform data width conversion. That is, the width of the data words written into the data FIFO of each source buffer may differ from the width of the words read and sent 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 a per-word granularity level, it must be able to make decisions every clock cycle. Since the QoS arbiter 120 runs in the sink clock domain, all decisions are made at the sink clock rate and the buffer is responsible for transferring the data and the necessary control signals to the sink clock domain. This is done using common asynchronous FIFO design techniques such as Gray code, which is used to pass FIFO address pointers from the source to the sink clock domain. By implementing the buffer as an asynchronous FIFO, the CBFC QoS system is able to transfer data from multiple independent source clock domains to one common sink clock domain.
[0016] A source buffer may receive and store data at the clock rate of source clock 142, thus transferring data from the source clock domain to the sink clock domain. The buffer then transmits the data to QoS arbiter 120 using sink clock 144, which is also used by QoS arbiter 120. Each source channel, or buffer, may be operated at a different and independent source clock frequency. The only requirement that CBLC QoS arbitration system 100 imposes on the system in one embodiment is that the transmit bandwidth of the sink does not exceed the receive bandwidth of any individual source, potentially creating a scenario where data may be read faster than it can be written into the buffer's data FIFO.
[0017] When a buffer starts receiving packets from the source channel, it issues an access request downstream to QoS arbiter 120 to transmit to sink 140. As long as the buffer has data in its queue, it continues to request transmission.
[0018] When a buffer finishes transmitting its current packet, it signals the end of the packet to the QoS arbiter 120 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 transmitting, or it may select the same buffer if the buffer still has packets to send and no other buffers have requested it. If the QoS arbiter 120 cuts a buffer while in the middle of transmitting a packet, it deasserts the acknowledge signal 193 to the selected buffer. The previously selected buffer interprets this as a cut, and depending on the configured mode or the number of times the packet has already been retried, it will either set its data FIFO read address to the start of the packet again and attempt to retransmit, or set its address to the end of the packet and drop it from the queue entirely.
[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. One word of data is transferred from the selected source buffer to the sink 146 every clock cycle that the sink asserts a ready signal 148. The ready signal 148 from the sink controls the rate at which the CBLC QoS arbitration system 100 may send data, and therefore directly controls the bandwidth of the system. The CBLC QoS arbitration system 100 does not impose any requirements on how often the ready signal 148 may be asserted, or on what periodicity.
[0020] Independent of the ready signal 148, the buffer selector 150 evaluates at each clock cycle whether the current buffer selected for transmission matches the selected buffer from the WPR scheduler 140. In case of a mismatch, the buffer selector 150 immediately switches the selected source buffer (described further below) and signals a cut event to the downstream sink with the cut signal 149.
[0021] The buffer selector 150 also communicates the current request status of all buffers and which buffers are being transmitted to the buffer rank calculator 130. The buffer rank calculator 130 uses this information to determine which buffers to select when comparing buffer ranks and controlling the decay and recovery of each buffer rank.
[0022] Even if no buffers are requesting transmission, the buffer selector 150 sends a signal to the buffer rank calculator 130 every cycle that the sink asserts the ready signal 148 so that the buffer rank calculator 130 can continue to perform buffer rank recovery (described further below) that allows buffers that previously transmitted data to return to their absolute rank minimum.
[0023] Turning now to the buffer rank calculator 130, the buffer rank calculator 130 of the QoS arbiter 120 repeatedly recalculates the rank of each buffer 110-116 every cycle that the sink asserts a ready signal. As explained further below, the buffer rank calculator 130 increases the rank of buffers that are actively sending data to the sink, and at the same time, the buffer rank calculator 130 decreases the rank of the remaining buffers that are not sending to the sink. By recalculating the rank of each buffer every time a word is sent, the buffer rank calculator 130 allows the QoS arbiter 120 to make bandwidth control decisions on a word-by-word basis. The buffer rank calculator 130 also compares the ranks of all buffers and forwards to the WPR scheduler 140 a list of all requested buffers that are tied for lowest rank.
[0024] Turning now to WPR scheduler 140, as explained further below, whenever QoS arbiter 120 must select a new buffer to transmit from multiple requested buffers that are tied for lowest rank, which are sent to WPR scheduler 140 by buffer rank calculator 130 as lowest rank buffer information 154, the WPR scheduler 140 of QoS arbiter 120 enables buffer selector 150 to make the decision fairly and randomly. WPR scheduler 140 also receives selected buffer information 195 from buffer selector 150.
[0025] If there is only one buffer identified in the lowest rank buffer information 154 as having the lowest rank and requesting transmission, the WPR scheduler 140 simply selects that buffer as the next buffer to transmit and forwards the identification information of that buffer to the buffer selector 150 as the transmit buffer information 156.
[0026] However, if the lowest rank buffer information 154 identifies multiple buffers as tied for lowest rank and requesting transmission, the WPR scheduler 140 uses a weighted priority table 162 (described further below) that holds probability weights set for each individual buffer 110-116 to select the new buffer to transmit from among the tied lowest rank buffers requesting access to the sink. This is called a QoS collision. A buffer with a higher probability weight set in the weighted priority table 162 will be selected statistically more frequently when tied with a buffer with a lower probability weight. This allows the CBLC QoS arbitration system 100 to implement a priority hierarchy among buffers while still giving all buffers a chance to have their packets transmitted first (conflict resolution is described further below). Once the WPR scheduler 140 selects a buffer to transmit from among the multiple requested buffers identified in the lowest rank buffer information 154 during a collision, the WPR scheduler 140 continues to select and transmit the same buffer to the buffer selector 150 as the transmit buffer information 156 as long as the selected buffers are tied for lowest rank or the selected buffer ceases its transmit request (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 conflict resolution. The CAE 164 periodically samples the lowest ranked request buffer 154 from the buffer rank calculator 130 at a configurable interval (e.g., every 100 ns). When the CAE 164 determines that there is a transmission request buffer that is not currently selected to transmit, the CAE 164 grants a configurable number of credits (e.g., 1 credit) to one of the waiting buffers. If only one buffer is requesting transmission but is not currently selected to transmit, the credits are automatically granted to that buffer. Alternatively, if there are multiple buffers waiting to transmit at any interval period, the CAE 164 grants credits to one of the waiting buffers using the individual buffer priorities contained in the weighted priority table 162. The CAE 164 then stores the number of credits granted to each buffer.
[0028] When a currently transmitting buffer completes or is cut off from transmitting its packets, WPR scheduler 140 first identifies all the lowest ranked buffers that wish to transmit from lowest ranked buffer information 154. WPR scheduler 140 then obtains the number of credits granted to the particular buffer identified in lowest ranked buffer information 154. WPR scheduler 140 then identifies the buffer with the greatest number of accumulated credits and sends the identification information of that buffer to buffer selector 150 as transmit buffer information 156. Once the identification information of the buffer is sent to buffer selector 150, the credits associated with the selected buffer are cleared to zero.
[0029] If there is more than one buffer identified in lowest ranked buffer information 154, and one or more of the buffers identified in lowest ranked buffer information 154 have the same number of accumulated credits, WPR scheduler 140 obtains from WPT 162 the probability weights associated with the one or more buffers with the same number of accumulated credits, and randomly selects one of these buffers based on the relative probability weights. The selected buffer is then transmitted to buffer selector 150 as transmit buffer information 156. As described above, when an identification of the selected buffer is transmitted to buffer selector 150, the credits associated with the selected buffer are cleared to zero.
[0030] By configuring the number of credits each buffer is awarded when selected by the CAE per interval, the system can tune the probability model of the WPR scheduler to favor buffers that spend more or less time waiting to be selected to transmit. For example, if each buffer is configured to be awarded credits based on a weight assigned to it in the WPT, the system will exponentially favor a buffer the longer it waits to be selected to transmit, since the WPT probability is essentially multiplied by the credits awarded by the CAE. If each buffer is configured to be awarded the same number of credits, a system can be achieved that linearly favors a buffer the longer it waits to transmit.
[0031] Turning now to the buffer rank calculator 130, the rank calculation process for each individual buffer will now be described in more detail. As mentioned above, the rank of each individual buffer is calculated by the buffer rank calculator 130 for each clock cycle that the sink asserts its ready signal 148. Each individual buffer that is actually selected to transmit to the sink during a particular clock cycle is identified as "decaying" and its rank is increased based on its individual rank decay formula [δn(x)]. Conversely, each buffer that is not transmitting to the sink during a particular sink ready cycle is identified as "recovering" and its rank is decreased based on its individual rank recovery formula [ρn(x)]. As explained above, only one buffer is selected to transmit 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 remain unchanged if they recover or have already recovered to a minimum rank as explained below. Alternatively, if none of the buffers have remaining data to transmit to the sink, all buffers remain unchanged if they recover or have already recovered to a minimum rank as explained below. Because buffer rank calculator 130 calculates and tracks the rank of each buffer 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 are independently configurable and stored in a buffer rank calculator in each buffer's buffer rank memory 170-176. A buffer's minimum rank limit is the initial rank value the buffer starts with before sending data to the sink. The minimum rank is also the lowest rank value the buffer may decrease to during recovery. Similarly, the maximum rank limit is the maximum rank value the buffer may increase to during decay.
[0033] The minimum and maximum rank settings may be used to establish a hierarchy of priorities between separate buffers. For example, consider a two-buffer system in which buffer[2] has a minimum rank value of 2 and buffer[l] is configured with 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 the lower value of 1. However, as buffer[1] transmits data to the sink, the rank of buffer[1] increases with each word of data transmitted according to the decay function stored for buffer[l]. Once buffer[1] decays and the rank of buffer[1] becomes equal to the rank of buffer[2], buffer[2] is identified as one of the lowest-ranked buffers and may be selected to transmit data to the sink using WPT162 in a collision.
[0034] From the perspective of computing the rank of an individual buffer at any point in 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, with the most significant 8 bits used as the absolute rank. In this implementation, the actual rank can be represented as any real number between 0.0 and 255.99999994 (with 1 / 224 accuracy), and the absolute rank can be represented as any integer between 0 and 255. In other embodiments, the actual rank may be implemented as a 64-bit register.
[0035] The buffer's actual rank [R(x)] is a non-negative real value calculated by the buffer rank calculator 130 and used internally by the buffer rank calculator 130 as described herein. The buffer's actual rank may start from the minimum rank of a fully restored buffer. Conversely, if a buffer is currently decaying to a higher rank, the buffer's actual rank may be a higher value. During decay, the buffer's actual rank is determined using its decay formula. The buffer's decay formula can be any constant or variable function to suit the needs of the system. For example, an exponential decay function δ(x)=x2 may be employed as the buffer's decay formula to implement decay that exponentially penalizes the buffer for sending large packets by exponentially increasing the buffer's rank for each word in a transmitted packet. Conversely, a buffer that employs a logarithmic decay function δ(x)=log(x) penalizes the buffer for sending multiple short packets by penalizing the buffer more severely for the first few words of a transmitted packet. A buffer employing a linear decay function gives equal weight to each word being transmitted, regardless of how large or small the packet being sent.
[0036] The absolute rank of a buffer [R'(x)] is an integer representation of the actual rank calculated by rounding down the actual rank to the next integer value. The absolute rank is the value that rank comparator 184 of buffer rank calculator 130 uses to determine which buffer among one or more buffers has the lowest absolute rank.
[0037] Similar to the calculation of a buffer's actual rank using its individual decay formula while it is decaying (sending data), a buffer's individual recovery formula is used to calculate a buffer's actual rank while it is recovering (not sending data). As with the decay formula, a buffer's recovery formula can be any constant or variable function that suits the needs of the system. For example, the exponential recovery function ρ(x) = x2 implements recovery that penalizes attempts to send packets too frequently, such that the buffer recovers slowly immediately after transmission (as explained in more detail in the rank calculation example below).
[0038] In terms of formulas, the actual rank decay formula can be expressed as follows: Rn(x)=Sn+δn(x)
[0039] where Rn(x) is the actual rank calculated for the xth word sent from buffer[n], Sn is the initial actual rank value at which buffer[n] starts to decay, and δn(x) is the decay function for buffer[n].
[0040] Similarly, the actual rank recovery equation can be expressed as: Rn(x)=Sn-ρn(x)
[0041] where Rn(x) is the actual rank calculated for the xth word not yet transmitted from buffer[n], Sn is the initial actual rank value at which buffer[n] begins to recover, and ρn(x) is the recovery function for buffer[n].
[0042] Furthermore, the absolute rank equation can be expressed as follows: Rn'(x) = floor(Rn(x))
[0043] where 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 for buffer[n].
[0044] 2 shows a graphical representation 202 of the buffer rank during decay and a graphical representation 204 of the buffer rank during recovery. In this example, the buffer decay function is a linear function δ n (x)=C D *x, where C D is the decay constant, x is the number of sink-ready cycles of decay the buffer has experienced, and this decay 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 sink ready cycles of recovery the buffer has experienced. This recovery function is proportional to the number of ready signals from the sink for which the buffer did not send a word. In Figure 2, C D is set to 0.25, C R is 0.125(C D / 2).
[0045] As shown in the decaying buffer rank graphical representation 202 of FIG. 2, the vertical axis represents the rank of the buffer and the horizontal axis represents the number of words transmitted by the buffer during decay. As described above, as a buffer transmits words, the actual rank of that buffer increases using the buffer's decay function, shown as actual rank 220. Additionally, the buffer's absolute rank 224 is determined by rounding down the buffer's actual rank to the next lower integer, as shown. As shown in the decaying buffer rank graphical representation 202 and represented by the dotted vertical lines 210-214, the buffer's absolute rank increases from an initial minimum rank of 0 to ranks of 1, 2, and then 3 after transmitting 4, 8, and 12 words, respectively.
[0046] As shown in the graphical representation 204 of buffer rank during recovery in FIG. 2, 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 in which an individual buffer does not transmit words, the buffer's actual rank is decreased using the buffer's recovery function, shown as actual rank 220. Additionally, the buffer's absolute rank 224 is determined by rounding down the buffer's actual rank to the next lower integer, as shown. As shown in the graphical representation 204 of buffer rank during recovery and represented by the dotted vertical line 216, the buffer's absolute rank is decreased from a starting rank of 3, which is the rank at which decay stops, to a rank of 2 when no data is transmitted for 8 sink ready cycles.
[0047] Figure 3 shows a graphical representation 302 of the buffer rank during decay and a graphical representation 304 of the buffer rank during recovery when using different decay and recovery formulas than those shown in Figure 2. In Figure 3, the buffer decay function is set to an exponential function δn(x) = CD * x2 and the buffer recovery function is ρn(x) = CR * x2. In Figure 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 decay in FIG. 3, the vertical axis represents the rank of the buffer and the horizontal axis represents the number of words transmitted by the buffer during decay. As described above, as the buffer transmits words, the buffer's actual rank increases using the buffer's decay function, shown as actual rank 320. Additionally, the buffer's absolute rank 324 is determined by rounding down the buffer's actual rank to the next lower integer, as shown. As shown in the graphical representation 302 of the buffer rank during decay and represented by the dotted vertical lines 310-314, the buffer's absolute rank increases from an initial minimum rank of 0 to ranks of 1, 2, and then 4 after transmitting 2, 3, and 4 words, respectively.
[0049] As shown in the graphical representation 304 of 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 in which an individual buffer does not transmit a word, the buffer's actual rank is decreased using the buffer's recovery function, shown as actual rank 320. Additionally, the buffer's absolute rank 324 is determined by rounding down the buffer's actual rank to the next lower integer, as shown. As shown in the graphical representation 304 of buffer rank during recovery and represented by the dotted vertical lines 316, 318, the buffer's absolute rank is decreased from a starting rank of 4, which is the rank at which decay stops, to rank 3 and then rank 2 when no data is transmitted for 3 and 4 sink request cycles, respectively.
[0050] Figure 3 shows how choosing different decay and recovery function configurations can affect the overall system performance. The decay formula chosen in Figure 3 indicates that if a buffer attempts to transmit many words to the sink by sending a large packet or by sending multiple packets in succession, the rank of that buffer may decay exponentially faster, giving other buffers a chance to transmit more quickly. Similarly, the recovery formula chosen in Figure 3 indicates that if a buffer does not wait a sufficient time between sending packets, the rank of that buffer will not recover to a low enough level that it may become prioritized over other buffers.
[0051] In one embodiment, buffer rank calculator 130 includes a rank recovery adjustment system 180 that adjusts the actual rank of a buffer (which may affect the absolute rank of the buffer) during recovery based on how long the buffer waited before being granted access to transmit to the sink. This is called rank recovery adjustment. When rank recovery adjustment is enabled, the rank calculator tracks and stores, for each buffer, the number of ready cycles during which the sink requested data but the waiting buffer was not selected to transmit. For each request that the waiting buffer failed to transmit, rank recovery adjustment system 180 calculates a rank recovery adjustment value using the rank recovery formula for the individual buffer.
[0052] When a waiting buffer is finally selected for transmission, the rank of that buffer decays as normal using that buffer's rank decay formula. However, if that buffer experiences a first request cycle of recovery after completion of its packet, the recovery adjustment value is applied only once to the first request cycle of recovery. The recovery adjustment system also has a configuration that allows it to apply the same recovery adjustment value to the first request cycle of recovery even if a packet is cut. If this configuration is disabled and a 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 has been applied to the rank of a buffer, the recovery adjustment is cleared so that a new recovery value can be calculated the next time the buffer is awaiting transmission, and the buffer continues to recover using its recovery function as normal. The net effect of the recovery adjustment is to fit the rank recovery curve to the recovery curve that would be expected if there were no delays in the transmission of packets for the buffer.
[0054] When rank recovery adjustment is disabled, the time that the absolute rank of the buffer decays and recovers is delayed compared to the expected time if the transmission of the packet was 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 in the first non-transmitting cycle to match the recovered rank that would be expected if the transmission of the buffer was not delayed. Furthermore, when applying rank recovery adjustment, the rank recovery adjustment system 180 ensures that the applied adjustment does not cause the rank to decrease below the minimum rank configuration of the buffer.
[0055] FIG. 4 shows an example of a decay and recovery curve of a buffer rank when the rank recovery tuning system 180 is disabled 402 and enabled 404. As shown in FIG. 4, in the decay and recovery curve of a buffer rank when the rank recovery tuning 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 an expected decay and recovery curve 420 and an 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, if the buffer started transmitting after the delay time 440, the actual decay and recovery curve 430 is the actual decay and recovery curve that the buffer would experience. As shown at 402 , when the rank recovery tuning system 180 is disabled, the actual decay and recovery curve 430 matches the expected decay and recovery curve 420 shifted to the right by a delay time 440 .
[0056] As shown in FIG. 4, in the decay and recovery curves of the buffer rank when the rank recovery adjustment system 180 is enabled 404, 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 the decay. Also shown are expected decay and recovery curves 420 and actual decay and recovery curves 430. Again, in the actual decay and recovery curve 430, the transmission of the buffer was delayed by a delay time 440. However, because the rank recovery adjustment system 180 is now enabled, once the actual curve 430 reaches its peak and the buffer stops transmitting, the rank recovery adjustment is immediately applied, which immediately reduces the actual decay and recovery curve 430 to match the estimated decay and recovery curve 420 that the buffer would have experienced if the buffer had not experienced a delay. In this way, the rank of the previously delayed buffer recovers to a lower rank more quickly than it would have otherwise, thereby increasing the likelihood that the buffer will be selected for data transmission sooner. That is, when the rank recovery adjustment is disabled, the decay and recovery time of the absolute rank of the buffer is delayed compared to the time that would be expected if the transmission of the packets had not been 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 time that would be expected if there was no transmission delay for the buffer.
[0057] A collision is defined as when the buffer selector 150 must select a new buffer to send to the sink from among multiple requested buffers that are all tied for lowest rank. This occurs when a packet has completed transmission or when a buffer is cut because its rank is no longer the lowest. To resolve these collision scenarios, the buffer selector 150 relies on the WPR scheduler 140. The purpose of the WPR scheduler 140 is to provide another layer of configuration to achieve a buffer priority hierarchy that meets the system requirements. The WPR scheduler 140 achieves 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 primary mechanism that the WPR scheduler 140 uses to randomly select a buffer with a desired probability distribution from among buffers requesting transmission. If the credit accumulation engine 164 is disabled, the WPR scheduler 140 uses the weighted priority table 162 only in the case of a collision in which a new buffer must be selected for transmission. Conversely, when the credit accumulation engine 164 is enabled, the WPR scheduler 140 uses the weighted priority table 162 at periodic intervals to allocate credits to buffers waiting to be transmitted, and when a collision needs to be resolved, the WPR scheduler 140 selects the buffer with the most accumulated credits and uses the weighted priority table 162 when a tie needs to be resolved.
[0058] The weighted priority table 162 used by the WPR scheduler 140 is a table with N entries, where N is equal to the number of buffers in the system. Each entry consists of a probability weight for the buffer corresponding to the index of the entry in the table. The weights set are intended to represent the probability of selecting a particular buffer relative to all other buffers in the system, with the total probability being 100%. For example, consider a system with four buffers and thus a weighted priority table with 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 constructed as follows: [Table 1]
[0059] The weighted priority table 162 is used by the WPR scheduler 140 to continuously randomly select a buffer to transmit from the lowest ranked buffers every clock cycle. As described above, the WPR scheduler 140 receives selected buffer information 195 from the buffer selector 150. Thus, the WPR scheduler knows which buffer is currently selected to transmit data to the sink. As long as the currently selected buffer is still transmitting and is one of the lowest ranked buffers, the WPR scheduler simply informs the buffer selector to keep the currently selected buffer as the transmit buffer. When the currently selected buffer stops requesting transmission (i.e., the transmission of the current packet is completed) or the buffer rank calculator informs the WPR scheduler that the currently selected buffer is no longer the lowest ranked among the requesting buffers (i.e., a cut occurs), the WPR scheduler signals the buffer selector to select a new transmit buffer. Therefore, every clock cycle, the WPR scheduler continuously evaluates which buffer should be the next transmit buffer among the buffers that are not currently selected as the transmit buffer. By restricting the selection process to only buffers that are actively requesting and not transmitting, the weighted priority table 162 uses the assigned global buffer priority weights to derive relative priority weights. The probability of selecting a requesting buffer in any given clock cycle is derived from these relative priority weights. For example, consider a scenario in which buffer[1] is currently transmitting a packet while buffer[2] and buffer[3] are requesting transmission, the relative probability weights are: [Table 2]
[0060] Table 2 shows that buffer[2] has a 40% probability of being selected and buffer[3] has a 60% probability. Thus, the relative probabilities of buffer[2] and buffer[3] maintain the global 2:3 probability ratio of the same buffer set in the weighted priority table. To resolve conflicts, WPR scheduler 140 uses the results of weighted priority table 162 to either directly select a new transmit buffer when CAE 164 is disabled or allocate credits to buffers at regular intervals when CAE 164 is enabled.
[0061] When CAE 164 is disabled, WPR scheduler 140 directly uses the output of weighted priority table 162 to resolve conflicts. WPR scheduler 140 does this by evaluating the decision flow outlined below in the flowchart of FIG. 5 every clock cycle. Considering the previous example where buffer[1] is currently transmitting a packet while buffer[2] and buffer[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] has completed transmitting its packet and its rank will not increase above the ranks of buffer[2] and buffer[3], WPR scheduler 140 will select the next buffer to transmit between buffer[2] and buffer[3] at the moment buffer[1] completes its packet. Again, there is a 40% probability that buffer[2] will be selected and a 60% probability that buffer[3] will be selected.
[0062] FIG. 5 illustrates a flowchart 500 of a decision flow of the WPR scheduler 140 without CAE 164 according to an embodiment of the present invention. Starting at start 510, the process proceeds to step 520 where the WPR scheduler 140 determines whether there are any buffers requesting to send data to the sink. If there are no buffers requesting to send data to the sink, the process returns to start 510 and waits for the next clock cycle. Conversely, if there are any buffers requesting 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 is still requesting to send data and has the lowest rank or is in a tie for the lowest absolute rank. If the currently selected buffer is still requesting to send data and has the lowest rank or is in a tie for the lowest absolute rank, the process proceeds to step 540 where the WPR scheduler 140 maintains the currently selected buffer as the selected buffer. An identification of the selected buffer is sent to the buffer selector 150 as send buffer data 156. Processing then returns to start 510 to await the next clock cycle.
[0063] Conversely, if the currently selected buffer is no longer requesting transmission, or if the currently selected buffer is no longer the lowest absolute rank or is no longer in a tie for lowest absolute rank, processing proceeds to step 550. In step 550, WPR scheduler 140 determines one or more buffers with the lowest absolute rank. If there is only one buffer with the lowest absolute rank, processing proceeds to step 570, where the one buffer with the lowest absolute rank is selected. The identity of the selected buffer is sent to buffer selector 150 as send buffer data 156. Processing then returns to start 510 to await the next clock cycle.
[0064] Conversely, if there are multiple lowest absolute ranked buffers requesting transmission, the process proceeds to step 560. In step 560, WPR scheduler 140 randomly selects one of the requesting buffers using their relative probability weights from WPT 162. For example, if there are two lowest priority buffers requesting transmission, with buffer[2] having a relative probability of 40% and buffer[3] having a relative probability of 60%, WPR scheduler 140 may randomly determine a number between 1 and 100. If the number is between 1 and 40, buffer[2] is selected. If the number is between 41 and 100, buffer[3] is selected. The identity of the selected buffer is sent to buffer selector 150 as transmit buffer data 156. The process then returns to start 510 to await the next clock cycle. In another embodiment of the WPT random selection mechanism, the WPT assigns 40 non-contagious values between 1 and 100 to buffer[2] and 60 non-contagious values to buffer[3]. Then, every clock cycle, the WPT randomly selects a value between 1 and 100 and selects the buffer assigned to that value.
[0065] Alternatively, when CAE 164 is enabled, WPR scheduler 140 uses the output of weighted priority table 162 in two ways: first, to allocate credits to waiting buffers at regular intervals using the weighted priority table's random buffer selection, and second, to make the final decision on which buffer should transmit next in the event of a collision where there is a tie as to which buffer has accumulated the most credits.
[0066] By allocating credits to buffers waiting to transmit at regular intervals, WPR scheduler 140 allows the system to give more weight to buffers that have been waiting longer to transmit. By increasing the interval for when credits are allocated, or by increasing the number of credits allocated to buffers for each interval in which they are selected, WPR scheduler 140 can adjust the probability that a buffer will be selected during conflict resolution more based on the buffer's waiting time.
[0067] 6 shows a flowchart 500 of the decision flow of the WPR scheduler 140 when CAE 164 is enabled, according to one embodiment of the present invention. Beginning at 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. If the CAE interval has elapsed, the process proceeds to step 615.
[0068] In step 615, the WPR scheduler 140 determines whether there are any buffers waiting to be transmitted. If there are any buffers waiting to be transmitted, the process proceeds to step 620. In step 620, the WPR scheduler 140 determines whether there are multiple buffers waiting to be transmitted. If there are multiple buffers waiting to be transmitted, the process proceeds to step 630, where the WPR scheduler 140 randomly selects one of the waiting buffers to allocate credits to based on the set probability weights. For example, if there are two buffers waiting to be transmitted and the relative probability of buffer[l] is 40% and the probability of buffer[2] is 60%, the WPR scheduler 140 can randomly determine a number between 1 and 100. If the number is between 1 and 40, the credit is allocated to buffer[1]. If the number is between 41 and 100, the credit is allocated to buffer[2]. The total amount of credits allocated to each buffer is stored by the WPR scheduler 140. Processing then proceeds to step 635.
[0069] Returning to step 620, if there is only one buffer waiting to be transmitted, processing proceeds to step 625 where the WPR scheduler 140 allocates credits to the only waiting buffer.
[0070] Returning to step 615 , if there are no buffers waiting to be sent, processing continues to step 635 .
[0071] In step 635, WPR scheduler 140 determines whether the currently selected buffer is still requesting data to be sent and has the lowest rank or is in a tie for lowest rank. If the currently selected buffer is still requesting data to be sent and has the lowest rank or is in a tie for lowest absolute rank, processing proceeds to step 640 where WPR scheduler 140 keeps the currently selected buffer as the selected buffer. The identity of the selected buffer is sent to buffer selector 150 as send buffer data 156. Processing then returns to start 605 to await the next clock cycle.
[0072] Conversely, if the currently selected buffer no longer requires transmission, or if the currently selected buffer is no longer the lowest absolute rank or is not tied for lowest absolute rank, processing proceeds to step 645. In step 645, WPR scheduler 140 determines one or more buffers with the lowest absolute rank. If there is only one buffer with the lowest absolute rank, processing proceeds to step 650, where the one buffer with the lowest absolute rank is selected. The identity of the selected buffer is sent to buffer selector 150 as send buffer data 156. Processing then returns to start 605 to await the next clock cycle.
[0073] Conversely, if there is more than one buffer with the lowest absolute rank requesting transmission, the process proceeds to step 655. Then, in step 655, WPR scheduler 140 obtains credits associated with each of the multiple buffers with the lowest absolute rank requesting transmission. If one of the buffers has more credits than one or more of the other buffers, the process proceeds to step 660, where WPR scheduler 140 selects the requesting buffer with the most credits. The process then proceeds to step 665, where WPR scheduler 140 clears or zeros the accumulated credits of the selected buffer. The identity of the selected buffer is sent to buffer selector 150 as transmit buffer data 156. The process then returns to start 605 to await the next clock cycle.
[0074] Returning to step 655, if there are multiple buffers with the lowest absolute rank requesting transmission and multiple buffers with the same number of credits, the process proceeds to step 670. In step 670, WPR scheduler 140 randomly selects one of the requested buffers with the same number of credits based on the probability weights set for these buffers represented in WPT 162. For example, if there are two lowest priority buffers requesting transmission and these buffers have the same number of credits, and buffer[l] has a relative probability of 40% and buffer[2] has a probability of 60%, WPR scheduler 140 can randomly determine a number between 1 and 100. If the number is between 1 and 40, buffer[1] is selected. If the number is between 41 and 100, buffer[2] is selected. The process then proceeds to step 665, where WPR scheduler 140 clears or zeros the accumulated credits for the selected buffer. The identification information of the selected buffer is sent to the buffer selector 150 as the send buffer data 156. The process then returns to start 605 to await the next clock cycle.
[0075] Turning now to a discussion of packet cutting, in order to allocate bandwidth fairly among all buffers, the QoS arbiter 120 implements a mechanism that allows a buffer to stop transmitting mid-packet and allow another buffer with a lower rank to start transmitting. This is called packet cutting, or simply "cutting."
[0076] A cut occurs when one or more buffers are requesting to send data to the sink and the absolute rank of the current transmit buffer increases (decays) so that it is no longer the lowest absolute rank or is no longer tied for the lowest absolute rank. In this scenario, the buffer selector 150 causes the current transmit buffer to stop sending (even if it is in the middle of a packet) and allows a lower ranked request buffer access to the sink, as determined herein. As mentioned above, the buffer selector accomplishes this by forcing the buffer's acknowledge signal low before the completion of the packet to notify the buffer that it has been cut. If multiple request buffers are tied for the lowest rank, the WPR scheduler 140 randomly selects a new transmit buffer based on the priority weights configured in the WPT 162. How sinks and sources respond to a cut packet is outside the scope of the QoS design. As mentioned above, when a buffer experiences a cut, it will either set its data FIFO read address to the beginning of the packet again and attempt to retransmit, or set its address to the end of the packet and drop from the queue entirely, depending on the configured mode or the number of times the packet has already been retried. Once a new buffer is selected for transmission, that buffer can begin transmitting data from the current location 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 it is being transmitted, or may discard the word if the cut signal is received before the transmission is complete. In another embodiment, in response to the cut signal, the buffer selector may intentionally corrupt a word currently being transmitted to the sink, for example, by changing the error correction coding or bits applied when the word is transmitted, causing the transmitted word to fail the sink's error checks and cause the sink to discard the word.
[0077] When a buffer is cut, it must wait until its absolute rank drops (recovers) enough to either become the lowest rank among the buffers requesting transmission, or to tie for the lowest rank, before it is selected again. When a cut buffer is selected for transmission again, it will either attempt to send the same packet that was cut from the beginning again, or it will attempt to send the next queued packet, depending on the mode setting of the buffer.
[0078] Regarding the setting mode of a buffer, the buffer can operate in one of two modes: retry mode or drop mode. When a buffer is set to retry mode, when the buffer is selected again to transmit data, the buffer attempts to retransmit the cut packet up to the configured maximum number of retries. Specifically, if a packet is cut midway, the buffer attempts to retransmit the packet from the beginning. However, when a packet is cut up to the maximum number of retries, the buffer drops the packet instead of attempting to retransmit the packet and instead attempts to transmit the next queued packet.
[0079] When a buffer is set to drop mode, it does not retry, but simply drops the cut packet and attempts to send the next queued packet the next time the buffer is selected to send data. In addition to dropping cut packets while in drop mode, the buffer also drops packets if it requests access to the sink and is denied on the next sink ready cycle because another buffer has been selected for transmission. Drop mode aims to minimize the waiting time of packets in the buffer's queue. If packets are not sent immediately or are cut, they are immediately considered to be no longer valid and are discarded.
[0080] Table 3 shows one embodiment of minimum and maximum ranges for some parameters of the CBLC QoS arbitration system 100, as well as typical ranges for a particular embodiment. 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 for buffer[n], decay function constant (CD) for buffer[n], recovery function constant (CR) for buffer[n], maximum rank for buffer[n], minimum rank for buffer[n], maximum number of attempts (cut mode) for buffer[n], maximum number of packets for buffer[n], maximum size of one packet for buffer[n], WPR credit accumulation interval, and WPR credit accumulation for buffer[n]) are specific to individual buffers and can be changed individually for each buffer to tune the system. The following parameters may be stored in and / or retrieved by the buffer rank calculator 130 - a decay function constant (CD) for buffer[n], a recovery function constant (CR) for buffer[n], a maximum rank for buffer[n], a minimum rank for buffer[n], and a maximum number of retries (cut mode) for buffer[n]. The following parameters may be stored in and / or retrieved by the WPR scheduler 140 - a probability weight for buffer[n], a WPR credit accumulation interval, and a WPR credit accumulation amount for buffer[n]. [Table 3]
[0081] In addition to the parameters specified above, the buffer rank calculator 130 stores the current actual and absolute ranks for each buffer. Additionally, when enabled, the CAE 164 stores the number of credits granted to each buffer.
[0082] Below is one embodiment of a parameter configuration for a complete CBLC QoS arbitration system 100 that is intended to represent a model of "fair" access. In this case, fair means that if a buffer requests to transmit a packet when its rank is at its initial (minimum) value, the CBLC QoS arbitration system 100 will guarantee transmission of the packet as long as its size is below a configured 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 stored packet size is 22 words. If a buffer transmits a packet with a size greater than 22 words, the absolute rank of the buffer increases while transmitting the packet, and therefore it may be cut off if another buffer is requesting transmission. In this example, the recovery function of each buffer is configured as a function of its probability weight and the maximum stored packet size. This ensures that lower ranked buffers consume a portion of the sink's bandwidth according to their probability weight by slowing down recovery every time a packet is transmitted.
[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 the other buffer is not transmitting or requesting transmission. Figures 7A and 7B include the following signal traces over time, as shown on the x-axis: Figure 7B overlaps in time with and occurs immediately after Figure 7A.
[0085] Source Clock - This trace represents the high / low state of the source clock, which controls when packets are received at the input buffer.
[0086] Buffer Data - This trace identifies the individual words within the packet. As shown in Figure 7, there are four words in the packet: A1-A4.
[0087] Buffer Data Valid--This trace is high when the buffer is receiving valid data.
[0088] Start of Buffer Packet--This trace goes high when a packet arrives in the buffer.
[0089] Buffer packet end--This trace goes low when a valid packet ends.
[0090] Sync Clock - This trace represents the high / low state of the Sync Clock, which controls when words are passed to the data sink.
[0091] Sink Ready - This trace goes high at the beginning of each Sink clock cycle and indicates when to start sending a word to the Sink.
[0092] Buffer Request - This trace goes high the first time the Sink Ready trace goes high after the Start Buffer Packet signal is received.
[0093] Buffer Confirm--This trace goes high when the arbiter 120 allows the buffer to be accessed by 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) with each transmitted word according to the buffer's specific decay function.
[0095] Buffer Absolute Rank - This trace represents the actual rank of the buffer rounded down to the nearest integer.
[0096] Sink Data - This trace represents the actual data words being sent to the sink.
[0097] Sink Data Valid - This trace goes high to indicate each Sink Clock cycle that the 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 Figures 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 Figures 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 grants access to buffer [1] to transmit data to the sink. At time D, the buffer's actual rank starts to decay with each word it transmits to the sink according to the buffer's decay function. At time E, the buffer's absolute rank increases because the buffer's actual rank is equal to 1.0. However, no other buffers are requesting transmission. Thus, arbiter 120 continues to allow buffer [1] to transmit data. At time F, buffer [1] signals the end of its transmit packet, so arbiter 120 is free to 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 since the buffer is no longer transmitting and the system has reached the next sink clock cycle.
[0101] Figures 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] at relatively the same time. Figures 8A and 8B include the following signal traces over time, as shown on the x-axis: Figure 8B overlaps in time with and occurs immediately after Figure 8A.
[0102] Source Clock[1] - This trace represents the high / low state of the source clock of buffer[1]. The source clock controls when packets are received into 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-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 a 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 when packets are received into 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-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 a valid packet in buffer [2] ends.
[0112] Sync Clock - This trace represents the high / low state of the Sync Clock, which controls when words are passed to the data sink.
[0113] Sync Ready - This trace goes high at the beginning of each Sync clock cycle and indicates when to start sending a word to the Sink.
[0114] CUT signal--This trace goes high when the arbiter 120 sends a CUT signal to the buffer that is cutting.
[0115] Buffer Request[1] - This trace goes high the first time the Sync Ready trace goes high after the Start of Buffer Packet signal is received from Buffer[1].
[0116] Buffer Confirm[1] - This trace goes high when the arbiter 120 allows buffer[1] access to 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) with each transmitted word according to the buffer's specific decay function.
[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 the first time the Sync Ready trace goes high after the Start of Buffer Packet signal is received from Buffer[2].
[0120] Buffer Confirm[2] - This trace goes high when the arbiter 120 allows buffer[2] access to the sink.
[0121] Buffer Actual Rank [2] - This trace represents the actual rank of buffer [2]. As shown in Figure 8, the actual rank decays (increases) with each transmitted word according to the buffer's specific decay function.
[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 words being sent to the sink.
[0124] Sink Data Valid - This trace goes high to indicate each Sink Clock cycle that the 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 sent to the sink.
[0126] Sink Packet End--This trace goes high while the last word of the packet is being sent to the sink.
[0127] In the example shown in Figures 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 to the same value: ρ1(x) = ρ2(x) = 0.2*x.
[0128] As shown in Figures 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 buffers to request access to the sink in the sink clock domain at time B. Both requests arrive at arbiter 120 at the same time. Also, as described above, arbiter 120 determines that both buffers have the same absolute rank. Thus, WPR scheduler 140 of arbiter 120 randomly selects one of the buffers to provide access to the sink according to WPT 162, as described above. In the example of Figures 8A and 8B, buffer[2] is selected to be transmitted first, as shown at time C.
[0129] When buffer[2] begins transmitting its second word, the absolute rank of buffer[2] increases to one at time D. However, because buffer[1] has not transmitted any words, the absolute rank of buffer[1] remains zero. Thus, the absolute rank of buffer[2] has increased above the absolute rank of buffer[1] before it has finished transmitting its packet (only two of the packet's four words, B1 and B2, have been transmitted). Arbiter 120 cuts the packet from buffer[2] by sending a cut signal to buffer[2] at time E, allowing buffer[1] to begin transmitting instead, as indicated by buffer acknowledge[1].
[0130] At time F, the actual rank of buffer[2] becomes less than 1 and the absolute rank is determined by rounding down the actual rank to the next integer, so the absolute rank of buffer[2] is restored to 0. However, at time F, the ranks of both buffer[1] and buffer[2] are 0, so arbiter 120 continues to allow buffer[1] to transmit since buffer[1] is still tied for the lowest rank. Later, at time G, buffer[1] transmits its last word, A4, to complete the transmission of its packet. Now that buffer[2] is the only buffer requesting access to the sink, arbiter 120 returns access to the sink to buffer[2], as indicated by the Buffer Acknowledge[2] signal going high.
[0131] 9A and 9B 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 not enabled. 9A and 9B include the following signal traces over time, as shown on the x-axis: 9B overlaps in time with and occurs immediately after 9A.
[0132] Sync Clock - This trace represents the high / low state of the Sync Clock, which controls when words are passed to the data sink.
[0133] Sync Ready - This trace goes high at the beginning of each Sync clock cycle and indicates when to start sending a word to the Sink.
[0134] CUT signal - this trace goes high when the arbiter 120 sends a CUT signal to the buffer that is cutting.
[0135] Buffer Request[1] - This trace goes high the first time the Sync Ready trace goes high after the Start of Buffer Packet signal is received from Buffer[1].
[0136] Buffer Request[2] - This trace goes high the first time the Sync Ready trace goes high after the Start of Buffer Packet signal is received from Buffer[2].
[0137] Buffer Request[3] - This trace goes high the first time the Sync Ready trace goes high after the Start of Buffer Packet signal is received from Buffer[3].
[0138] Buffer Request[4] - This trace goes high the first time the Sync Ready trace goes high after the Start of Buffer Packet signal is received from Buffer[4].
[0139] Buffer Confirm[1] - This trace goes high when the arbiter 120 allows buffer[1] access to the sink.
[0140] Buffer Confirm[2] - This trace goes high when the arbiter 120 allows buffer[2] access to the sink.
[0141] Buffer Confirm[3] - This trace goes high when the arbiter 120 allows Buffer[3] access to the sink.
[0142] Buffer Confirm[4] - This trace goes high when the arbiter 120 allows Buffer[4] access to the 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) with each transmitted word according to the buffer's specific decay function.
[0144] Buffer Actual Rank [2] - This trace represents the actual rank of buffer [2]. As shown in Figure 9, the actual rank decays (increases) with each transmitted word according to the buffer's specific decay function.
[0145] Buffer Actual Rank [3] - This trace represents the actual rank of buffer [3]. As shown in Figure 9, the actual rank decays (increases) with each transmitted word according to the buffer's specific decay function.
[0146] Buffer Actual Rank [4] - This trace represents the actual rank of buffer [4]. As shown in Figure 9, the actual rank decays (increases) with each transmitted word according to the buffer's specific decay function.
[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 Ranked Buffer - This trace shows which buffer is currently lowest ranked.
[0152] Sink Data - This trace represents the actual data words being sent to the sink.
[0153] Sink Data Valid - This trace goes high to indicate each Sink Clock cycle that the 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 Figure 9A and Figure 9B, before time A, buffer[1] has sent a word to the sink, as indicated by the increase in buffer actual rank[1] and the sink data. Before time A, the absolute rank of buffer[1] is considered zero. However, at time A, buffer absolute rank[1] decays to 1 because buffer actual rank[1] has increased to 1. Before time A, buffer[2] has already requested to send data to the sink, as indicated by the high trace of buffer request[2]. However, other buffers have not yet requested access to the sink.
[0157] As a result, at time A, both buffer[1] and buffer[2] are making 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-ranked buffer at time B. However, since buffer[1] is already sending to the sink, buffer[1] can continue sending to the sink and buffer[2] waits.
[0158] At time C, buffer[3] requests to send data to the sink, as shown by the Buffer Request[3] trace going high. Buffer[3]'s absolute rank is also 1, as shown in the Buffer Absolute Rank[3] trace. As a result, buffer[1], buffer[2], and buffer[3] are all now tied for the lowest ranked buffer with rank 1, as shown at D in the Lowest Ranked Buffer trace. However, buffer[1] has already sent to the sink and can continue sending to the sink.
[0159] 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. Furthermore, at time F, buffer[1] is removed from the trace of lowest-ranked buffers because buffer[1] no longer attempts to send data to the sink. Now, buffer[2] and buffer[3] are the lowest-ranked buffers.
[0160] At F, the WPR scheduler 140 determines that there is a collision because there are two buffers with the lowest priority requesting to send data to the sink and one buffer needs to be selected to send data to the sink. As described above, the WPR scheduler 140 randomly selects one of buffer[2] and buffer[3] based on their relative weights in the WPT 162. In the example of Figures 9A and 9B, the WPR scheduler 140 randomly selects buffer[3] as the buffer to send, and the WPR scheduler 140 sends a signal to buffer[3], as shown by the trace of buffer acknowledge[3] going high at G. Then, buffer[3] starts sending words to the sink, as shown by the trace of sink data and the increase in buffer actual rank[3]. The increase in buffer actual rank[3] is done according to the individual decay equation of buffer[3]. It is further shown that buffer actual rank[1] decreases according to the recovery equation of buffer[1] for each cycle that buffer[1] does not send a word.
[0161] Figures 10A and 10B show a timing diagram of the operation of the CBLC QoS arbitration system 100 for a WPR collision example in a four-buffer system when CAE is enabled. Figure 10B overlaps in time with and occurs immediately after Figure 10A. Figures 10A and 10B contain the same signal traces over time as Figures 9A and 9B, and add the following signal traces:
[0162] CAE Intervals - This trace shows the Credit Allocation Engine intervals. The CAE grants credits at the end of each CAE interval.
[0163] Buffer CAE Credits[1] - This trace shows the sum of accumulated CAE credits for Buffer[1].
[0164] Buffer CAE Credits [2] - This trace shows the sum of accumulated CAE credits for Buffer [2].
[0165] Buffer CAE Credits [3] - This trace shows the sum of accumulated CAE credits for Buffer [3].
[0166] Buffer CAE Credits[4] - This trace shows the sum of accumulated CAE credits for Buffer[4].
[0167] In the example of Figures 10A and 10B, the same activity and data collisions occur as shown above in Figures 9A and 9B: at time A, both buffer[1] and buffer[2] are making 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-ranked buffer at B. However, since buffer[1] is already sending to the sink, buffer[1] can continue sending to the sink and buffer[2] waits.
[0168] At time C, buffer[3] requests to send data to the sink, as shown by the Buffer Request[3] trace going high. The absolute rank of buffer[3] is also 1, as shown in the Buffer Absolute Rank[3] trace. As a result, all buffers[1], buffer[2], and buffer[3] are now tied for the lowest ranked buffer with rank 1, as shown at D in the Lowest Ranked Buffer trace. However, buffer[1] has already sent to the sink and can continue sending 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. Furthermore, buffer[1] is removed from the trace of lowest-ranked buffers at F, because buffer[1] is no longer attempting to send data to the sink. Buffer[2] and buffer[3] are now the lowest-ranked buffers.
[0170] At F, the WPR scheduler 140 determines that there is a collision because there are two buffers with the lowest priority requesting to send data to the sink and one buffer needs to be selected to send data to the sink. However, in Figures 10A and 10B, instead of randomly selecting a buffer based on the WPT 162, the WPR scheduler 140 employs the CAE 164.
[0171] For traces showing CAE operation, at H, buffer[1] is sending to the sink, but buffer[2] has requested to send to the sink (indicated by the Buffer Request[2] trace going high), but is not allowed to send to the sink during the current CAE interval. As a result, CAE 164 allocates credit to buffer[2], as shown by Buffer CAE Credit[2] at I. Furthermore, during the next CAE interval, buffer[2] cannot send because buffer[1] is still sending. As a result, CAE 164 allocates additional credit to buffer[2], as shown by Buffer CAE Credit[2] at the same time in C and D. Buffer CAE Credit[2] has now risen to 2.
[0172] However, in C, buffer[3] is requesting access to the sink. As a result, in the next CAE interval at J, both buffer[2] and buffer[3] are not allowed to send data to the sink, even though they are requesting access to the sink. With CAE enabled, buffer[2] automatically accumulates credits for every interval its request line is asserted, and buffer[3]'s request line is deasserted. However, in J, when buffer[3] also asserts its request line, CAE 164 uses weighted priority table 162 to select either buffer[2] or buffer[3] to allocate credits. In one embodiment, due to their relative probability weights set in weighted priority table 162, in every interval buffer[2] has a 40% probability of being allocated credits and buffer[3] has a 60% probability. As shown in FIG. 10A and FIG. 10B, in K, buffer[3] is randomly selected by CAE 164 and granted credits as shown in buffer CAE credit[3]. However, buffer[2] cannot yet be sent to the sink, and as a result, it retains a current credit value of 2, as shown in buffer CAECredit[2].
[0173] As mentioned above, in F, buffer[1] completes sending a packet, and 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 one buffer needs to be selected to send data to the sink. In this example, WPR scheduler 140 resolves the collision by checking the number of credits each buffer has accumulated (shown in buffer CAE credits), and then selecting the buffer with the most credits to send data to the sink. If there is a tie between two or more buffers for the most accumulated credits, WPR scheduler 140 randomly selects a winning buffer from the tie using weighted priority table 162. In this way, the relative probability between each buffer being selected is again maintained.
[0174] 10A and 10B, at time F, buffer CAE credit[2] is greater than buffer CAE credit[3]. As a result, WPR scheduler 140 sends a buffer confirm[2] signal to buffer[2] as shown at G, and buffer[2] is now able to send data to the sink. Furthermore, because buffer[2] is now able to send data to the sink, the CAE credit of buffer[2] is cleared to zero as shown at M.
[0175] While particular elements, embodiments, and applications of the invention have been shown and described, it is understood that the invention is not limited thereto since modifications may be made by those skilled in the art, particularly in light of the above teachings, and it is therefore intended by the appended claims to cover such modifications and incorporate those features which fall within the spirit and scope of the invention.
[0176] [Note] [Concept 1] a first buffer for receiving a first packet including at least one first packet word, the first buffer being associated with an actual rank of the first buffer; a second buffer for receiving 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 operable to receive data words 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 for selecting whether the first buffer or the second buffer is permitted to transmit words to the sink; Equipped with the actual rank of the first buffer increases for each first packet word transmitted by the first buffer to the sink according to a first stored decay equation; the actual rank of the first buffer is decreased to a minimum of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmit cycle in which the first buffer is not transmitting a first packet word to the sink; the actual rank of the second buffer increases for each second packet word transmitted by the second buffer to the sink according to a second stored decay equation; the actual rank of the second buffer is decreased to a minimum of a predetermined minimum rank of the second buffer according to a second stored recovery equation for each sink transmit cycle in which the second buffer is not transmitting a second packet word to the sink; the buffer rank calculator determines an 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 an 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 if an absolute rank of the first buffer is less than an absolute rank of the second buffer, and selects the second buffer if an absolute rank of the second buffer is less than an absolute rank of the first buffer. A buffered arbitration communication system. [Concept 2] the first stored damping equation is different from the second stored damping equation; 13. The system according to claim 1. [Concept 3] the first stored recovery equation is different from the second stored recovery equation; 13. The system according to claim 1. [Concept 4] the predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer; 13. The system according to claim 1. [Concept 5] 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; 13. The system according to claim 1. [Concept 6] If 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 is allowed to transmit data to the sink using a selection probability of the first buffer and a 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 first buffer credit entry and a second buffer credit entry; the CAE grants credit to the first buffer by incrementing a credit entry of the first 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 second buffer by incrementing a credit entry of the second buffer when the first buffer transmits data to the sink and the second buffer cannot transmit data to the sink; 10. The system according to claim 5. [Concept 8] If neither the first buffer nor the second buffer is sending 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 entries of the first buffer with the credit entries of the second buffer and allows the buffer with the higher credit entries to communicate with the sink. 8. The system according to claim 7. [Concept 9] If 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 is allowed to transmit data to the sink using a selection probability of the first buffer and a selection probability of the second buffer. 10. The system of claim 8. [Concept 10] the credits granted to the first buffer are different from the credits granted to the second buffer; 8. The system according to claim 7. [Concept 11] receiving a first packet into a first buffer associated with an actual rank of the first buffer, the first packet including at least one first packet word; receiving a second packet into a second buffer associated with an actual rank of the second buffer, the second packet including at least one second packet word; providing a data sink configured to optionally receive data words from either the first buffer or the second buffer; storing the actual rank of the first buffer and the actual rank of the second buffer in a buffer rank calculator; for each first packet word transmitted by the first buffer to the sink, increasing an actual rank of the first buffer according to a first stored decay equation; decreasing the actual rank of the first buffer to a minimum of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmit cycle in which the first buffer is not transmitting a first packet word to the sink; for each second packet word transmitted by the second buffer to the sink, increasing an actual rank of the second buffer according to a second stored decay equation; decreasing the actual rank of the second buffer to a minimum of a predetermined minimum rank of the second buffer according to a second stored recovery equation for each sink transmit cycle in which the second buffer is not transmitting a second packet word to the sink; determining, using the buffer rank calculator, an absolute rank of a first buffer by rounding down the actual rank of the first buffer to the next integer; determining, using the buffer rank calculator, the absolute rank of the second buffer by rounding down the actual rank of the second buffer to the next integer; and selecting, using a buffer selector, whether the first buffer or the second buffer is allowed to transmit words to the sink; the buffer selector selects the first buffer if an absolute rank of the first buffer is less than an absolute rank of the second buffer, and selects the second buffer if an absolute rank of the second buffer is less than an absolute rank of the first buffer. A buffer arbitration method. [Concept 12] the first stored damping equation is different from the second stored damping equation; The method according to claim 11. [Concept 13] the first stored recovery equation is different from the second stored recovery equation; The method according to claim 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 claim 11. [Concept 15] 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. [Concept 16] If 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 is allowed to transmit data to the sink using a selection probability of the first buffer and a selection probability of the second buffer. The method according to concept 15. [Concept 17] providing a credit accumulation engine (CAE); the CAE includes a first buffer credit entry and a second buffer credit entry; granting credit to the first buffer by incrementing a credit entry of the first buffer using the CAE when the second buffer sends data to the sink and the first buffer cannot send data to the sink; granting credit to the second buffer by incrementing a credit entry of the second buffer using the CAE when the first buffer transmits data to the sink and the second buffer cannot transmit data to the sink; The method according to concept 15. [Concept 18] If neither the first buffer nor the second buffer is sending 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 entries of the first buffer with the credit entries of the second buffer and allows the buffer with the higher credit entries to communicate with the sink. The method according to concept 17. [Concept 19] If 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 is allowed to transmit data to the sink using a selection probability of the first buffer and a selection probability of the second buffer. The method according to concept 18. [Concept 20] the credits granted to the first buffer are different from the credits granted to the second buffer; The method according to concept 17.
Claims
1. a first buffer for receiving 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 for receiving 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 operable to receive data words 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 for selecting whether the first buffer or the second buffer is permitted to transmit words to the data sink; Equipped with an actual rank of the first buffer increases for each first packet word transmitted by the first buffer to the data sink according to a first stored decay equation; the actual rank of the first buffer is decreased to a minimum of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmit 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 for each second packet word transmitted by the second buffer to the data sink according to a second stored decay equation; the second stored damping equation is different from the first stored damping equation; the actual rank of the second buffer is decreased to a minimum of a predetermined minimum rank of the second buffer according to a second stored recovery equation for each sink transmit cycle in which the second buffer is not transmitting a second packet word to the data sink; the buffer rank calculator determines an 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 an 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 a first word of the first packet to the data sink and the buffer selector determines that the absolute rank of the second buffer becomes less than the absolute rank of the first buffer, the buffer selector causes the first buffer to stop transmitting the first packet prior to transmitting a second word of the first packet. A buffered arbitration communication system.
2. after the buffer selector causes the first buffer to stop transmitting the first packet, the buffer selector allows the second buffer to start transmitting the second packet to the data sink. The system of claim 1 .
3. the first stored recovery equation is different from the second stored recovery equation; The system of claim 1 .
4. the predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer; The system of claim 1 .
5. 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 system of claim 1 .
6. If 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 is allowed to transmit data to the data sink using a selection probability of the first buffer and a selection probability of the second buffer. The system according to claim 5.
7. Further includes a Credit Accumulation Engine (CAE), the CAE includes a first buffer credit entry and a second buffer credit entry; the CAE grants credit to the first buffer by incrementing a 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; the CAE grants credit to the second buffer by incrementing a credit entry of the second buffer when the first buffer transmits data to the data sink and the second buffer cannot transmit data to the data sink; The system of claim 5.
8. If neither the first buffer nor the second buffer is transmitting 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 entries of the first buffer with the credit entries of the second buffer and allows the buffer with the higher credit entries to communicate with the data sink. The system of claim 7.
9. If 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 is allowed to transmit data to the data sink using a selection probability of the first buffer and a selection probability of the second buffer. The system of claim 8.
10. the credits granted to the first buffer are different from the credits granted to the second buffer; The system of claim 7.
11. receiving a first packet into a first buffer associated with an actual rank of the first buffer, the first packet including at least a first word of the first packet and a second word of the first packet; receiving a second packet into a second buffer associated with an actual rank of the second buffer, the second packet including at least one second packet word; providing a data sink configured to optionally receive data words from either the first buffer or the second buffer; storing the actual rank of the first buffer and the actual rank of the second buffer in a buffer rank calculator; for each first packet word transmitted by the first buffer to the data sink, increasing an actual rank of the first buffer according to a first stored decay equation; decreasing the actual rank of the first buffer to a minimum of a predetermined minimum rank of the first buffer according to a first stored recovery equation for each sink transmit cycle in which the first buffer is not transmitting a first packet word to the data sink; increasing an actual rank of the second buffer 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 being different from the first stored attenuation equation; decreasing the actual rank of the second buffer to a minimum of a predetermined minimum rank of the second buffer according to a second stored recovery equation for each sink transmit cycle in which the second buffer is not transmitting a second packet word to the data sink; determining, using the buffer rank calculator, an absolute rank of a first buffer by rounding down the actual rank of the first buffer to the next integer; determining, using the buffer rank calculator, an absolute rank of the second buffer by rounding down the actual rank of the second buffer to the next integer; and selecting, using a buffer selector, which of the first buffer and the second buffer is permitted to transmit words to the data sink; when the first buffer is transmitting a first word of the first packet to the data sink and the buffer selector determines that the absolute rank of the second buffer becomes less than the absolute rank of the first buffer, the buffer selector causes the first buffer to stop transmitting the first packet prior to transmitting a second word of the first packet. A buffer arbitration method.
12. and after the buffer selector causes the first buffer to stop transmitting the first packet, using the buffer selector to start transmitting the second packet to the data sink. The method of claim 11.
13. the first stored recovery equation is different from the second stored recovery equation; The method of claim 11.
14. the predetermined minimum rank of the first buffer is different from the predetermined minimum rank of the second buffer; The method of claim 11.
15. 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 of claim 11.
16. If 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 is allowed to transmit data to the data sink using a selection probability of the first buffer and a selection probability of the second buffer. The method of claim 15.
17. providing a credit accumulation engine (CAE); the CAE includes a first buffer credit entry and a second buffer credit entry; granting credit to the first buffer by incrementing a credit entry of the first buffer using the CAE when the second buffer transmits data to the data sink and the first buffer cannot transmit data to the data sink; granting credit to the second buffer by incrementing a credit entry of the second buffer using the CAE when the first buffer transmits data to the data sink and the second buffer cannot transmit data to the data sink; The method of claim 15.
18. If neither the first buffer nor the second buffer is transmitting 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 entries of the first buffer with the credit entries of the second buffer and allows the buffer with the higher credit entries to communicate with the data sink.
20. The method of claim 17.
19. If 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 is allowed to transmit data to the data sink using a selection probability of the first buffer and a selection probability of the second buffer.
20. The method of claim 18.
20. the credits granted to the first buffer are different from the credits granted to the second buffer; 20. The method of claim 17.
Citation Information
Patent Citations
Selective ATM cell abort control method and system to realize it
JP1998051458A
Packet transfer method
JP2002057704A
Sequence control program and method of packet transmission
JP2005210301A
Calculating credit for controlling data frame transmission
US20140036672A1