Non-consecutive data readout scheduler
First Claim
Patent Images
1. In a switching system having a plurality of input ports and a plurality of contention points in a switch fabric, a method of ordering input data packets into a switching system fabric comprised of the steps of:
- a. receiving at an input port a number of input data packets, each requiring transfer through at least one of said switch fabric contention points;
b. queuing each input data packet into one or more data queues where each data queue contains packets destined for a particular switch fabric contention point through which each said data packet is to be transferred by said switch fabric;
c. forming a T-member list of vectors, where each vector is chosen from a set of vector values, each vector value save one corresponding to one of the said one or more data queues;
the remaining vector value is a null-vector indicating that no-packet is sent into the switch fabric during the corresponding slot;
d. assigning to each of said T members of said list, a k-bit binary ordinal number between 0 and T−
1, where k=log2(T);
e. for each member of said list, assigning thereto a k-bit reverse binary number valued between zero and T−
1 corresponding to the vectors in the list;
f. beginning with the vector assigned the reverse binary value zero and ending with the vector assigned reverse binary number T−
1, transferring a data packet into said switch fabric from the data queue corresponding to said vector.
4 Assignments
0 Petitions
Accused Products
Abstract
Data switching systems for use in ATM and other packet and cell switching networks can more smoothly switch data if incoming data packets to be switched are re-ordered to avoid overwhelming an output port with too many consecutive packets to a particular destination. An apparatus and method for simply re-ordering data samples in a non-consecutive manner is computationally efficient and effective.
40 Citations
25 Claims
-
1. In a switching system having a plurality of input ports and a plurality of contention points in a switch fabric, a method of ordering input data packets into a switching system fabric comprised of the steps of:
-
a. receiving at an input port a number of input data packets, each requiring transfer through at least one of said switch fabric contention points;
b. queuing each input data packet into one or more data queues where each data queue contains packets destined for a particular switch fabric contention point through which each said data packet is to be transferred by said switch fabric;
c. forming a T-member list of vectors, where each vector is chosen from a set of vector values, each vector value save one corresponding to one of the said one or more data queues;
the remaining vector value is a null-vector indicating that no-packet is sent into the switch fabric during the corresponding slot;
d. assigning to each of said T members of said list, a k-bit binary ordinal number between 0 and T−
1, where k=log2(T);
e. for each member of said list, assigning thereto a k-bit reverse binary number valued between zero and T−
1 corresponding to the vectors in the list;
f. beginning with the vector assigned the reverse binary value zero and ending with the vector assigned reverse binary number T−
1, transferring a data packet into said switch fabric from the data queue corresponding to said vector.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
i. forming a plurality of parallel processing blocks, wherein each of said blocks corresponds to a said vector and contains the ordinal numbers occupied by the vector in the said assignment list;
ii. determining a reverse binary number correspond ing to a time slot, said time slot one of a plurality of time slots numbered consecutively from 0 to T−
1;
iii. sending said reverse binary number to each of said processing blocks;
iv. determining, for each processing block, if said reverse binary number corresponds to said ordinal number assigned to said vector of said processing block from said assignment list;
v. transferring a data packet into said switch fabric from said data queue corresponding to the said vector indicated by said processing block.
-
-
9. A switching system having a plurality of input ports, each of which receives data packets, and one or more contention points through which data packets are transferred via a switching fabric, comprised of:
-
a. an input port at which data packets from a plurality of sources are received, each data packet requiring transfer through at least one of said one or more contention points via said switching fabric;
b. a data buffer comprised of at least T storage locations into which data packets from said plurality of sources are stored and queued into at least one or more data queues where each queue contains packets destined for a particular switch fabric contention point through which each of said data packets are to be transferred;
c. a memory device storing an assignment list of T elements, each element in the list consisting of a vector pointing to one of said one or more data queues, each element of said list being enumerated by an ordinal k-bit binary number, where k=log2(T), ranging in value from zero to T−
1 and further being enumerated by a k-bit reverse binary number ranging in value from zero to T−
1, said reverse binary number being determined by reversing the binary digits of said ordinal k-bit binary number;
d. beginning with the element assigned the reverse binary value zero and ending with the element assigned reverse binary number T−
1, reading the vector in the element location and transferring a data packet into said switch fabric from the data queue corresponding to said vector.- View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
i. forming a plurality of parallel processing blocks, wherein each of said blocks corresponds to a said vector and contains the ordinal numbers occupied by the vector in the said assignment list;
ii. determining a reverse binary number corresponding to a time slot;
iii. sending said reverse binary number to each of said processing blocks;
iv. determining, for each processing block, if said reverse binary number corresponds to said ordinal number assigned to said vector of said processing block from said assignment list;
v. transferring a data packet into said switch fabric from said data queue corresponding to the said vector indicated by said processing block.
-
-
17. A switching system having input ports and a plurality of one or more contention points in the switch fabric, a method of ordering input data packets into a switching system fabric comprised of the steps of:
-
a. receiving at an input port a number of input data packets, each requiring transfer through said switch fabric contention points;
b. queuing each input data packet into one of at least one or more data queues where each data queue contains packets destined for a particular switch fabric contention point through which each said data packet is to be transferred by said switch fabric;
c. forming a T-member list of elements, where each element in the list consists of a queue of vectors chosen from a set of different vector values, each vector value save one corresponding to each of said data queues;
the remaining vector value is a null-vector indicating that no internal packet is sent into the switch fabric during the corresponding slot;
d. assigning to each of said T elements of said list, a k-bit binary ordinal number between 0 and T−
1, where k=log2(T);
e. for each element of said list, assigning thereto a k-bit reverse binary number valued between zero and T−
1 corresponding to the vectors in the list;
f. beginning with the element assigned the reverse binary value zero and ending with the element assigned reverse binary number T−
1, transferring the vectors queued in the list element to an output vector queue for the switch fabric input link;
g. choosing one vector for the output vector queue and transferring a data packet into said switch fabric from the data queue corresponding to said vector. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25)
i. forming a plurality of parallel processing blocks, wherein each of said blocks corresponds to a said vector and contains the ordinal numbers occupied by the vector in the said assignment list;
ii. determining a reverse binary number corresponding to a time slot;
iii. sending said reverse binary number to each of said processing blocks;
iv. determining, for each processing block, if said reverse binary number corresponds to said ordinal number assigned to said vector of said processing block from said assignment list;
v. queing said vectors from said processing blocks into said output vector queue.
-
Specification