IP Library Granted Patent US 7,342,889
Granted Patent B2
US 7,342,889 · App. 10/617,884 · Granted Mar 11, 2008

Means and a method for switching data packets or frames

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 7,342,889
App. No.
10/617,884
Granted
Mar 11, 2008
Kind
B2
Abstract

A switching means and method where a number of devices exchange data on a data bus. Each device has at least one data port and at least one of the devices has a plurality of data ports. The data ports may have different data rates. An arbitration takes into account availability or congestion of the ports before allowing data transport from device to device. The devices communicate directly over a cross bar.

Claims (116)

1. A means for switching data, the means comprising:

a data bus,

a plurality of devices configured to exchange data with each other via the data bus, each device being configured to receive data from and transmit data to at least one corresponding I/O port, at least one first device being configured to receive data from and transmit data to a plurality of corresponding I/O ports,

arbiter means for determining an order of exchanging, on the data bus, of data between the devices,

the devices being configured to:

receive and store data from a corresponding I/O port, transmit, to the arbiter, information relating to congestion or availability of a corresponding port,

receive, from the arbiter, information indicating whether the received data may be transmitted over the data bus,

transmit, if the information received indicates that the data may be transmitted, the data over the data bus, and

receive data from the data bus and forward the received data to a corresponding I/O port,

the arbiter being configured to:

receive, from the devices, the congestion or non-availability information, and

determine the order of exchanging data on the basis of the congestion information;

wherein a device is configured to determine congestion at a corresponding I/O port and to transmit corresponding information to the arbiter, and wherein the arbiter is configured to override any congestion or non-availability of a receiving device or I/O port when a congested I/O port wishes to transmit data thereto, and inform the pertaining device that the congested I/O port is allowed to transmit data.

2. A means according to claim 1 , wherein a plurality of the devices are configured to exchange data with each other directly over the data bus at at least substantially the same rate.

3. A means according to claim 1 , wherein the arbiter is configured to receive information relating to each piece of data received at the I/O ports, the information comprising an I/O port and/or a device to receive the piece of data.

4. A means according to claim 1 , wherein the arbiter is configured to provide, to the at least one first device, information relating to which of the corresponding ports is allowed to transmit data.

5. A means according to claim 1 , wherein the at least one first device is configured to determine to which of its corresponding I/O ports to transmit data received from the data bus.

6. A means according to claim 1 , wherein each device is configured to transmit all pieces of data received at the corresponding I/O ports to the data bus.

7. A means according to claim 1 , wherein at least one third device further comprises a processing means configured to:

provide a priority for each piece of data received at its I/O port(s),

divide each piece of data received at its I/O port(s) into cells before transmission thereof to the data bus and to assemble cells received from the data bus into pieces of data before outputting from an I/O port,

process each piece of data received at an I/O port, and/or derive, from each piece of data received at an I/O port, information for transmission to the arbiter.

8. A means according to claim 7 , wherein the device comprises a processing means for each I/O port of the device.

9. A means according to claim 7 , wherein the at least one third device has means for providing a priority for each piece of data received at its corresponding I/O port(s), and wherein the arbiter is configured to determine the order of exchanging data also on the basis of the priority of the data.

10. A means according to claim 1 , further comprising a Look-Up Engine configured to receive information relating to each piece of data received at an I/O port and to derive, from the information, identifying information relating to one or more I/O port(s) or device(s) to receive the piece of data.

11. A means according to claim 10 , wherein each device is further configured to derive, from each piece of data received, information relating to the piece of data, to transmit the information to the Look-Up Engine, receive identifying information from the LU Engine, and to exchange the identifying information on the data bus together with the piece of data.

12. A means according to claim 10 , wherein the data and identifying information is stored subsequent to receipt of the identifying information and prior to exchange thereof on the data bus.

13. A means according to claim 10 , wherein at least one fourth device is configured to, on the basis of the identifying information, determine whether the data is addressed for the device or not.

14. A means for switching data, the means comprising:

a data bus,

a plurality of devices configured to exchange data with each other via the data bus, each device being configured to receive data from and transmit data to at least one corresponding I/O port, at least one first device being configured to receive data from and transmit data to a plurality of corresponding I/O ports,

arbiter means for determining an order of exchanging, on the data bus, of data between the devices,

the devices being configured to:

receive and store data from a corresponding I/O port, transmit, to the arbiter, information relating to congestion or availability of a corresponding port,

receive, from the arbiter, information indicating whether the received data may be transmitted over the data bus,

transmit, if the information received indicates that the data may be transmitted, the data over the data bus, and

receive data from the data bus and forward the received data to a corresponding I/O port,

the arbiter being configured to:

receive, from the devices, the congestion or non-availability information, and

determine the order of exchanging data on the basis of the congestion information;

wherein the arbiter is configured to provide, to the at least one first device, information relating to which of the corresponding ports is allowed to transmit data; and

wherein the arbiter is configured to examine, for the at least one first device, whether a first port of the plurality of ports wishes to transmit data to a congested or non-available port and to, if so, examine whether another port of the plurality of ports wishes to transmit data to a non-congested or available port and, if so, transmit, to the at least one first device, information relating to the other port being allowed to transmit data.

15. A means for switching data, the means comprising:

a data bus,

a plurality of devices configured to exchange data with each other via the data bus, each device being configured to receive data from and transmit data to at least one corresponding I/O port, at least one first device being configured to receive data from and transmit data to a plurality of corresponding I/O ports,

arbiter means for determining an order of exchanging, on the data bus, of data between the devices,

the devices being configured to:

receive and store data from a corresponding I/O port, transmit, to the arbiter, information relating to congestion or availability of a corresponding port,

receive, from the arbiter, information indicating whether the received data may be transmitted over the data bus,

transmit, if the information received indicates that the data may be transmitted, the data over the data bus, and

receive data from the data bus and forward the received data to a corresponding I/O port,

the arbiter being configured to:

receive, from the devices, the congestion or non-availability information, and

determine the order of exchanging data on the basis of the congestion information;

a Look-Up Engine configured to receive information relating to each piece of data received at an I/O port and to derive, from the information, identifying information relating to one or more I/O port(s) or device(s) to receive the piece of data; and

wherein the arbiter is configured to, when more than one port or device is to receive a piece of data received at a receiving device, determine which of the ports and devices are available or non-congested and transmit information to the receiving device in order to have it forward the data to those ports and devices, and subsequently, when other of the ports or devices are available or non-congested, inform the receiving device to forward the data to those devices or ports.

16. A method of switching data in a switching means comprising:

a data bus,

a plurality of devices configured to exchange data with each other via the data bus, each device being configured to receive data from and transmit data to at least one corresponding I/O port, at least one first device being configured to receive data from and transmit data to a plurality of corresponding I/O ports, and

arbiter means for determining an order of exchanging, on the data bus, of data between the devices,

the method comprising the each device:

receiving and storing data from a corresponding I/O port,

transmitting, to the arbiter, information relating to congestion or availability of a corresponding port,

receiving, from the arbiter, information indicating whether the received data may be transmitted over the data bus,

transmitting, if the information received indicates that the data may be transmitted, the data over the data bus, and

receiving data from the data bus and forward the received data to a corresponding I/O port,

and the arbiter:

receiving, from the devices, the congestion or non-availability information, and

determining the order of exchanging data on the basis of the congestion information;

wherein a device determines congestion at a corresponding I/O port and transmits corresponding information to the arbiter, and wherein the arbiter overrides any congestion or non-availability of a receiving device or I/O port when a congested I/O port wishes to transmit data thereto, and informs the pertaining device that the congested I/O port is allowed to transmit data.

17. A method according to claim 16 , wherein a plurality of the devices exchange data with each other directly over the data bus at at least substantially the same rate.

18. A method according to claim 16 , wherein the arbiter receives information relating to each piece of data received at the I/O ports, the information comprising an I/O port and/or a device to receive the piece of data.

19. A method according to claim 16 , wherein the arbiter provides, to the at least one first device, information relating to which of the corresponding ports is allowed to transmit data.

20. A method according to claim 16 , wherein the at least one first device determines to which of its corresponding I/O ports to transmit data received from the data bus.

21. A method according to claim 16 , wherein each device transmits all pieces of data received at the corresponding I/O ports to the data bus.

22. A method according to claim 16 , wherein at least one third device further comprises one or more of the processing steps of:

providing a priority for each packet or frame received at its I/O port(s),

dividing each packet or frame received at its I/O port(s) into cells before transmission thereof to the data bus and assembling cells received from the data bus into frames or packets before outputting from an I/O port,

processing each packet or frame received at an I/O port, and

deriving, from each packet or frame received at an I/O port, information for transmission to the arbiter.

23. A method according to claim 22 , wherein the at least one third device performs one or more processing steps for each I/O port of the device.

24. A method according to claim 22 , wherein the at least one third device performs the step of providing a priority for each piece of data received at its corresponding I/O port(s), and wherein the arbiter determines the order of exchanging data also on the basis of the priority of the data.

25. A method according to claim 16 , further comprising the step of a Look-Up Engine receiving information relating to each piece of data received at an I/O port and deriving, from the information, identifying information relating to one or more I/O port(s) or device(s) to receive the piece of data.

26. A method according to claim 25 , wherein each device further derives, from each piece of data received, information relating to the piece of data, transmits the information to the LU Engine, receives identifying information from the Look-Up Engine, and exchanges the identifying information on the data bus together with the piece of data.

27. A method according to claim 25 , wherein the data and identifying information is stored subsequent to receipt of the identifying information and prior to exchange thereof on the data bus.

28. A method according to claim 25 , wherein at least one fourth device determines, on the basis of the identifying information, whether the data is addressed for the device or not.

29. A method of switching data in a switching means comprising:

a data bus,

a plurality of devices configured to exchange data with each other via the data bus, each device being configured to receive data from and transmit data to at least one corresponding I/O port, at least one first device being configured to receive data from and transmit data to a plurality of corresponding I/O ports, and

arbiter means for determining an order of exchanging, on the data bus, of data between the devices,

the method comprising the each device:

receiving and storing data from a corresponding I/O port,

transmitting, to the arbiter, information relating to congestion or availability of a corresponding port,

receiving, from the arbiter, information indicating whether the received data may be transmitted over the data bus,

transmitting, if the information received indicates that the data may be transmitted, the data over the data bus, and

receiving data from the data bus and forward the received data to a corresponding I/O port,

and the arbiter:

receiving, from the devices, the congestion or non-availability information, and

determining the order of exchanging data on the basis of the congestion information;

wherein the arbiter provides, to the at least one first device, information relating to which of the corresponding ports is allowed to transmit data; and

wherein the arbiter examines, for the at least one first device, whether a first port of the plurality of ports wishes to transmit data to a congested or non-available port and to, if so, examines whether another port of the plurality of ports wishes to transmit data to a non-congested or available port and, if so, transmits, to the at least one first device, information relating to the other port being allowed to transmit data.

30. A method of switching data in a switching means comprising:

a data bus,

a plurality of devices configured to exchange data with each other via the data bus, each device being configured to receive data from and transmit data to at least one corresponding I/O port, at least one first device being configured to receive data from and transmit data to a plurality of corresponding I/O ports, and

arbiter means for determining an order of exchanging, on the data bus, of data between the devices,

the method comprising the each device:

receiving and storing data from a corresponding I/O port,

transmitting, to the arbiter, information relating to congestion or availability of a corresponding port,

receiving, from the arbiter, information indicating whether the received data may be transmitted over the data bus,

transmitting, if the information received indicates that the data may be transmitted, the data over the data bus, and

receiving data from the data bus and forward the received data to a corresponding I/O port,

and the arbiter:

receiving, from the devices, the congestion or non-availability information, and

determining the order of exchanging data on the basis of the congestion information;

the step of a Look-Up Engine receiving information relating to each piece of data received at an I/O port and deriving, from the information, identifying information relating to one or more I/O port(s) or device(s) to receive the piece of data; and

wherein the arbiter determines, when more than one port or device is to receive a piece of data received at a receiving device, which of the ports and devices are available or non-congested and transmit information to the receiving device in order to have it forward the data to those ports and devices, and subsequently, when other of the ports or devices are available or non-congested, informs the receiving device to forward the data to those devices or ports.

Assignments (18)
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059358/0001 →
RELEASE OF SECURITY INTEREST Recorded Feb 25, 2022
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059333/0222 →
SECURITY INTEREST Recorded Sep 18, 2018
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 047103/0206 →
SECURITY INTEREST Recorded Jun 25, 2018
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 046426/0001 →
RELEASE OF SECURITY INTEREST Recorded May 29, 2018
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MICROSEMI CORPORATION; MICROSEMI SEMICONDUCTOR (U.S.), INC.; MICROSEMI FREQUENCY AND TIME CORPORATION; MICROSEMI COMMUNICATIONS, INC.; MICROSEMI SOC CORP.; MICROSEMI CORP. - POWER PRODUCTS GROUP; MICROSEMI CORP. - RF INTEGRATED SOLUTIONS
Reel/Frame 046251/0391 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2017
From: MICROSEMI COMMUNICATIONS, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 042523/0577 →
PATENT SECURITY AGREEMENT Recorded Feb 3, 2016
From: MICROSEMI CORPORATION; MICROSEMI SEMICONDUCTOR (U.S.) INC. (F/K/A LEGERITY, INC., ZARLINK SEMICONDUCTOR (V.N.) INC., CENTELLAX, INC., AND ZARLINK SEMICONDUCTOR (U.S.) INC.); MICROSEMI FREQUENCY AND TIME CORPORATION (F/K/A SYMMETRICON, INC.); MICROSEMI COMMUNICATIONS, INC. (F/K/A VITESSE SEMICONDUCTOR CORPORATION); MICROSEMI SOC CORP. (F/K/A ACTEL CORPORATION); MICROSEMI CORP. - POWER PRODUCTS GROUP (F/K/A ADVANCED POWER TECHNOLOGY INC.); MICROSEMI CORP. - RF INTEGRATED SOLUTIONS (F/K/A AML COMMUNICATIONS, INC.)
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037691/0697 →
RELEASE OF SECURITY INTEREST Recorded Jan 19, 2016
From: BANK OF AMERICA, N.A.
To: MICROSEMI CORPORATION; MICROSEMI CORP.-ANALOG MIXED SIGNAL GROUP, A DELAWARE CORPORATION; MICROSEMI SOC CORP., A CALIFORNIA CORPORATION; MICROSEMI SEMICONDUCTOR (U.S.) INC., A DELAWARE CORPORATION; MICROSEMI FREQUENCY AND TIME CORPORATION, A DELAWARE CORPORATION; MICROSEMI COMMUNICATIONS, INC. (F/K/A VITESSE SEMICONDUCTOR CORPORATION), A DELAWARE CORPORATION; MICROSEMI CORP.-MEMORY AND STORAGE SOLUTIONS (F/K/A WHITE ELECTRONIC DESIGNS CORPORATION), AN INDIANA CORPORATION
Reel/Frame 037558/0711 →
MERGER AND CHANGE OF NAME Recorded May 13, 2015
From: VITESSE SEMICONDUCTOR CORPORATION; LLIU100 ACQUISITION CORP.
To: MICROSEMI COMMUNICATIONS, INC.
Reel/Frame 035651/0708 →
SUPPLEMENTAL SECURITY AGREEMENT Recorded Apr 29, 2015
From: MICROSEMI COMMUNICATIONS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 035532/0925 →
RELEASE OF SECURITY INTEREST Recorded Apr 28, 2015
From: WHITEBOX VSC, LTD.
To: VITESSE SEMICONDUCTOR CORPORATION
Reel/Frame 035526/0090 →
RELEASE OF SECURITY INTEREST Recorded Nov 5, 2014
From: US BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VITESSE SEMICONDUCTOR CORPORATION
Reel/Frame 034176/0162 →
SECURITY AGREEMENT Recorded Dec 9, 2009
From: VITESSE SEMICONDUCTOR CORPORATION
To: WHITEBOX VSC, LTD.
Reel/Frame 023627/0079 →
COLLATERAL ASSIGNMENT (INTELLECTUAL PROPERTY) Recorded Nov 5, 2009
From: VITESSE SEMICONDUCTOR CORPORATION
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 023471/0267 →
RELEASE OF SECURITY INTEREST Recorded Oct 29, 2009
From: OBSIDIAN, LLC
To: VITESSE SEMICONDUCTOR CORPORATION; VLTESSE INTERNATIONAL, INC.; VITESSE MANUFACTURING & DEVELOPMENT CORPORATION; VITESSE SEMICONDUCTOR SALES CORPORATION
Reel/Frame 023438/0587 →
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2009
From: OBSIDIAN, LLC
To: VITESSE SEMICONDUCTOR CORPORATION
Reel/Frame 023373/0053 →
SECURITY AGREEMENT Recorded Jun 29, 2006
From: VITESSE SEMICONDUCTOR CORPORATION
To: OBSIDIAN, LLC, AS COLLATERAL AGENT
Reel/Frame 017846/0847 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2003
From: HARREKILDE-PETERSEN, KAI; NIELSEN, PETER OSTERGAARD
To: VITESSE SEMICONDUCTOR CORPORATION
Reel/Frame 014801/0322 →