IP Library Granted Patent US 8,050,265
Granted Patent B2
US 8,050,265 · App. 12/343,688 · Granted Nov 1, 2011

Multicast data packet switching method

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,050,265
App. No.
12/343,688
Granted
Nov 1, 2011
Kind
B2
Abstract

A method of switching data packets between an input and a plurality of outputs of a switching device. The switching device comprises a memory arranged to store a plurality of data structures, each data structure being associated with one of said outputs. The method comprises receiving a first data packet at said input, and storing said first data packet in a data structure associated with an output from which said data packet is to be transmitted. If said first data packet is intended to be transmitted from a plurality of said outputs, indication data is stored in each data structure associated with an output from which said first data packet is to be transmitted, but said first data packet is stored in only one of said data structures. The first data packet is transmitted from said data structure to the or each output from which the first data packet is to be transmitted.

Claims (86)

1. A method of switching data packets between an input and a plurality of outputs of a switching device, the switching device comprising a memory arranged to store a plurality of data structures, each data structure being associated with one of said outputs, the method comprising:

receiving a first data packet at said input;

storing said first data packet in a data structure associated with an output from which said first data packet is to be transmitted;

receiving an ordered plurality of data packets;

storing each of said plurality of data packets in one of said data structures;

if said first data packet is intended to be transmitted from a plurality of said outputs, storing indication data in each of said data structures associated with an output from which said first data packet is to be transmitted, said first data packet being stored in only one of said data structures, said indication data comprising slave indication data, said slave indication data being stored in each data structure associated with an output from which said first data packet is to be transmitted except the data structure in which said first data packet is stored and said slave indication data being stored alongside one data packet stored in each data structure except the data structure in which said first data packet is stored, said one data packet in each data structure being received after said first data packet is stored, and before any other data packet is stored in the respective data structure;

transmitting said first data packet from said data structure to the or each output from which the first data packet is to be transmitted.

2. The method according to claim 1 wherein said indication data is a single bit indicator.

3. The method according to claim 1 , wherein said indication data comprises master indication data, and the method further comprises:

storing said master indication data in said data structure in which said first data packet is stored.

4. The method according to claim 1 , further comprising:

processing each of said data structures to determine a data packet to be transmitted from an output associated with each data structure; and

if a data packet to be transmitted from one of said data structures has associated indication data, delaying transmission of said data packet until it is determined that data packets to be transmitted from each of said outputs have associated indication data.

5. The method according to claim 1 , wherein each of said outputs is an egress port.

6. The method according to claim 1 , wherein each of said outputs is a virtual channel on a port.

7. The method according to claim 1 , wherein each of said outputs is a virtual channel on a port associated with a traffic class.

8. The method according to claim 1 , further comprising: storing data structure indication data indicating a data structure in which a data packet to be transmitted from a plurality of outputs is to be stored.

9. The method according to claim 8 , wherein said switching device comprises two outputs each having an associated data structure, and the data structure indication data comprises one bit of data.

10. The method according to claim 8 wherein said switching device comprises n outputs each having an associated data structure, and said data structure indication data comprises a data value capable of indicating n values.

11. The method according to claim 10 wherein said data structure indication data comprises an n-way register.

12. The method according to claim 8 , wherein the method comprises: updating said data structure indication data in a circular manner.

13. The method according to claim 1 , wherein said data structures are queues.

14. The method according to claim 1 , wherein said switching device is a PCI express switch.

15. A non-transitory carrier medium carrying computer readable code for controlling a computer to carry out the method of claim 1 .

16. A switching device, the switching device comprising:

a memory storing processor readable instructions; and

a processor configured to read and execute instructions stored in said memory;

wherein said processor readable instructions comprise instructions controlling the processor to carry out a method according claim 1 .

17. A method of switching data packets between an input and a plurality of outputs of a switching device, the switching device comprising a memory arranged to store a plurality of data structures, each data structure being associated with one of said outputs, the method comprising:

receiving an ordered plurality of data packets at said input;

storing each of said plurality of data packets in one of said data structures associated with an output from which said data packet is to be transmitted;

if a data packet of said plurality of packets is intended to be transmitted from a plurality of said outputs, storing indication data in each data structure associated with an output from which said data packet is to be transmitted, said data packet being stored in only one of said data structures;

processing each of said data structures to determine a data packet to be transmitted from an output associated with each data structure;

if a data packet to be transmitted from one of said data structures has associated indication data, delaying transmission of said data packet until it is determined that data packets to be transmitted from each of said outputs have associated indication data;

determining a data packet having associated master indication data and no slave indication data; and

transmitting said determined data packet to each output from which it is to be transmitted.

18. The method according to claim 17 , further comprising:

determining if slave indication data is associated with an entry in any data structure other than that storing said data packet having associated master indication data and no slave indication data; and

clearing determined slave indication data in each data structure except said data structure.

19. A switching device for switching data packets between an input and a plurality of outputs comprising:

at least one input for receiving data packets including a first data packet;

a plurality of outputs from which the received data packets are to be transmitted;

a memory arranged to store a plurality of data structures, each data structure being associated with one of said outputs;

circuitry configured to:

receive an ordered plurality of data packets;

store each of said plurality of data packets in one of said data structures;

determine whether said first data packet is intended to be transmitted from a plurality of said outputs; and

store indication data such that if said first data packet is intended to be transmitted from a plurality of said outputs, indication data is stored in each data structure associated with an output from which said first data packet is to be transmitted, said first data packet being stored in only one of said data structures;

wherein said indication data comprises slave indication data, and the circuitry is arranged to store said slave indication data alongside one data packet stored in each data structure associated with an output from which said first data packet is to be transmitted except the data structure in which said first data packet is stored, said one data packet in each data structure being received after said first data packet is stored, and before any other data packet is stored in the respective data structure.

20. The switching device according to claim 19 wherein said indication data is a single bit indicator.

21. The switching device according to claim 19 , wherein said indication data comprises master indication data, and the switching device is arranged to store said master indication data in said data structure in which said data packet is stored.

22. The switching device according to claim 19 , wherein the circuitry is arranged to:

process each of said data structures to determine a data packet to be transmitted from an output associated with each data structure; and

if a data packet to be transmitted from one of said data structures has associated indication data, to delay transmission of said data packet until it is determined that data packets to be transmitted from each of said outputs have associated indication data.

23. The switching device according to claim 19 , wherein the memory is arranged to store data structure indication data indicating a data structure in which a data packet to be transmitted from a plurality of outputs is to be stored.

24. An apparatus for switching data packets between an input and a plurality of outputs comprising:

at least one input for receiving data packets;

a plurality of outputs from which the received data packets are to be transmitted;

means for receiving a first data packet;

means for storing said first data packet in a data structure associated with an output from which said data packet is to be transmitted;

means for receiving an ordered plurality of data packets;

means for storing each of said plurality of data packets in one of said data structures;

means for determining whether said first data packet is intended to be transmitted from a plurality of said outputs, and if said first data packet is intended to be transmitted from a plurality of said outputs for storing indication data in each data structure associated with an output from which said first data packet is to be transmitted, said indication data including slave indication data stored in each data structure associated with an output from which said first data packet is to be transmitted except for the data structure in which said first data packet is stored, said first data packet being stored in only one of said data structures; and

means for transmitting said first data packet from said data structure to the or each output from which the first data packet is to be transmitted.

25. A switching device for switching data packets between an input and a plurality of outputs comprising:

at least one input for receiving data packets including a first data packet;

a plurality of outputs from which the received data packets are to be transmitted;

a memory arranged to store a plurality of data structures, each data structure being associated with one of said outputs;

circuitry configured to:

receive an ordered plurality of data packets at said input;

store each of said plurality of data packets in one of said data structures associated with an output from which said data packet is to be transmitted;

if a data packet of said plurality of packets is intended to be transmitted from a plurality of said outputs, to store indication data in each data structure associated with an output from which said data packet is to be transmitted, said data packet being stored in only one of said data structures;

process each of said data structures to determine a data packet to be transmitted from an output associated with each data structure;

if a data packet to be transmitted from one of said data structures has associated indication data, delay transmission of said data packet until it is determined that data packets to be transmitted from each of said outputs have associated indication data;

determine a data packet having associated master indication data and no slave indication data; and

transmit said determined data packet to each output from which it is to be transmitted.

26. An apparatus for switching data packets between an input and a plurality of outputs comprising:

at least one input for receiving data packets;

a plurality of outputs from which the received data packets are to be transmitted;

means for receiving an ordered plurality of data packets;

means for storing each of said plurality of data packets in one of said data structures associated with an output from which said data packet is to be transmitted;

means for, if a data packet of said plurality of packets is intended to be transmitted from a plurality of said outputs, storing indication data in each data structure associated with an output from which said first data packet is to be transmitted, said data packet being stored in only one of said data structures;

means for processing each of said data structures to determine a data packet to be transmitted from an output associated with each data structure;

means for, if a data packet to be transmitted from one of said data structures has associated indication data, delaying transmission of said data packet until it is determined that data packets to be transmitted from each of said outputs have associated indication data;

means for determining a data packet having associated master indication data and no slave indication data; and

means for transmitting said determined data packet to each output from which it is to be transmitted.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
RELEASE OF SECURITY INTEREST Recorded May 18, 2012
From: KREOS CAPITAL III (LUXEMBOURG) S.A.R.L
To: MICRON TECHNOLOGY, INC
Reel/Frame 028233/0608 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2012
From: VIRTENSYS LIMITED
To: MICRON TECHNOLOGY, INC
Reel/Frame 028037/0001 →
SECURITY AGREEMENT Recorded Oct 13, 2010
From: VIRTENSYS LIMITED
To: KREOS CAPITAL III (LUXEMBOURG) S.A.R.L.
Reel/Frame 025126/0776 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2009
From: NAVEN, FINBAR; MARSHALL, STEPHEN JOHN
To: VIRTENSYS LIMITED
Reel/Frame 022556/0292 →