IP Library Granted Patent US 10,445,280
Granted Patent B2
US 10,445,280 · App. 15/291,414 · Granted Oct 15, 2019

PCIe switch for aggregating a large number of endpoint devices

Inventors: David W. Cosby (Raleigh, NC); Jonathan R. Hinkle (Raleigh, NC); Theodore B. Vojnovich (Raleigh, NC)
Assignee: Lenovo Enterprise Solutions (Singapore) Pte. Ltd.
G06F13/4068G06F13/4282Y02D10/14Y02D10/151
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 10,445,280
App. No.
15/291,414
Granted
Oct 15, 2019
Kind
B2
Abstract

An apparatus includes a root port for coupling to a root complex, and a plurality of endpoint ports for coupling to endpoint devices, wherein each endpoint port is associated with a function number. A downstream buffer queues transaction layer packets (TLPs) received from the root port, wherein each TLP in the downstream buffer is directed to an endpoint port associated with the identified function number. An upstream buffer queues TLPs received from each endpoint port, and directs the queued TLPs to the root port. A method includes associating a function number with each endpoint port of a switch, wherein each endpoint port is adapted for coupling to an endpoint device. The method further includes receiving a first TLP from a root complex, identifying a function number within the first TLP, and directing the first TLP to an endpoint device through the endpoint port associated with the identified function number.

Claims (38)

1. An apparatus, comprising:

a root port for coupling to a root complex via a serial computer expansion bus;

a plurality of endpoint ports, each endpoint port for coupling to an endpoint device via a serial communication link, wherein each endpoint port is associated with a function number;

a downstream buffer disposed in a first communication pathway from a downstream output of the root port to each of the endpoint ports, wherein the downstream buffer queues transaction layer packets received from the downstream output of the root port, wherein a function number is identified from each transaction layer packet in the downstream buffer, and wherein each transaction layer packet in the downstream buffer is directed to a downstream input of one of the endpoint ports associated with the identified function number;

a demultiplexer having a demultiplexer input in communication with a head of the downstream buffer and a plurality of demultiplexer outputs, wherein each demultiplexer output is in communication with a downstream input of one of the endpoint ports;

an upstream buffer disposed in a second communication pathway from an upstream output of each of the endpoint ports to an upstream input of the root port, wherein the upstream buffer queues transaction layer packets received from the upstream output of each endpoint port, and wherein the transaction layer packets in the upstream buffer are directed to the upstream input of the root port; and

a multiplexer having a multiplexer output to a tail of the upstream buffer and a plurality of multiplexer inputs, wherein each multiplexer input is in communication with an upstream output of one of the endpoint ports.

2. The apparatus of claim 1 , further comprising:

a plurality of endpoint devices, each endpoint device coupled to an endpoint port by a serial communication link.

3. The apparatus of claim 2 , wherein each serial communication link from an endpoint port to an endpoint device has the same number of lanes.

4. The apparatus of claim 2 , wherein the plurality of endpoint devices are unable to communicate with each other.

5. The apparatus of claim 2 , further comprising:

a memory controller coupled to the root port by a serial communication link.

6. The apparatus of claim 5 , wherein the memory controller stores endpoint data associating a function number with each endpoint device.

7. The apparatus of claim 1 , wherein the plurality of endpoint ports are separated into groups, wherein each group of endpoint ports is associated with a device number, and wherein a device number is identified from a transaction layer packet, and wherein each transaction layer packet is directed to a downstream buffer for the group of endpoint ports associated with the identified device number.

8. The apparatus of claim 1 , wherein each endpoint port, for each transaction layer packet received from the downstream buffer, sets the function number identified from the transaction layer packet to a value of zero prior to directing the transaction layer packet to an endpoint device connected to the endpoint port.

9. The apparatus of claim 1 , wherein each endpoint port, for each transaction layer packet received from an endpoint device connected to the endpoint port, sets the function number in the transaction layer packet to a value of the function number of the endpoint port prior to posting the transaction layer packet to the upstream buffer.

10. The apparatus of claim 1 , wherein the root port, the plurality of endpoint ports, the upstream buffer and the downstream buffer are compliant with a layered protocol.

11. The apparatus of claim 10 , wherein the root port manages a data link layer and a physical layer of the layered protocol for serial communication with the root complex, and wherein each endpoint port manages the data link layer and the physical layer of the layered protocol for serial communication with the endpoint device connected to the endpoint port.

12. An apparatus, comprising:

a root port for coupling to a root complex via a serial computer expansion bus;

a plurality of endpoint ports, each endpoint port for coupling to an endpoint device via a serial communication link, wherein each endpoint port is associated with a function number;

a downstream buffer disposed in a first communication pathway from a downstream output of the root port to each of the endpoint ports, wherein the downstream buffer queues transaction layer packets received from the downstream output of the root port, wherein a function number is identified from each transaction layer packet in the downstream buffer, and wherein each transaction layer packet in the downstream buffer is directed to a downstream input of one of the endpoint ports associated with the identified function number; and

an upstream buffer disposed in a second communication pathway from an upstream output of each of the endpoint ports to an upstream input of the root port, wherein the upstream buffer queues transaction layer packets received from the upstream output of each endpoint port, and wherein the transaction layer packets in the upstream buffer are directed to the upstream input of the root port, wherein each endpoint port, for each transaction layer packet received from an endpoint device connected to the endpoint port, sets the function number in the transaction layer packet to a value of the function number of the endpoint port prior to posting the transaction layer packet to the upstream buffer.

13. The apparatus of claim 1 , further comprising:

a plurality of endpoint devices, each endpoint device coupled to an endpoint port by a serial communication link.

14. The apparatus of claim 13 , further comprising:

a memory controller coupled to the root port by a serial communication link.

15. The apparatus of claim 14 , wherein the memory controller stores endpoint data associating a function number with each endpoint device.

16. The apparatus of claim 12 , wherein the plurality of endpoint ports are separated into groups, wherein each group of endpoint ports is associated with a device number, and wherein a device number is identified from a transaction layer packet, and wherein each transaction layer packet is directed to a downstream buffer for the group of endpoint ports associated with the identified device number.

17. The apparatus of claim 12 , wherein each endpoint port, for each transaction layer packet received from the downstream buffer, sets the function number identified from the transaction layer packet to a value of zero prior to directing the transaction layer packet to an endpoint device connected to the endpoint port.

18. The apparatus of claim 12 , wherein the root port, the plurality of endpoint ports, the upstream buffer and the downstream buffer are compliant with a layered protocol.

19. The apparatus of claim 18 , wherein the root port manages a data link layer and a physical layer of the layered protocol for serial communication with the root complex, and wherein each endpoint port manages the data link layer and the physical layer of the layered protocol for serial communication with the endpoint device connected to the endpoint port.

20. An apparatus, comprising:

a root port for coupling to a root complex via a serial computer expansion bus;

a plurality of endpoint ports, each endpoint port for coupling to an endpoint device via a serial communication link, wherein each endpoint port is associated with a function number;

a downstream buffer disposed in a first communication pathway from a downstream output of the root port to each of the endpoint ports, wherein the downstream buffer queues transaction layer packets received from the downstream output of the root port, wherein a function number is identified from each transaction layer packet in the downstream buffer, and wherein each transaction layer packet in the downstream buffer is directed to a downstream input of one of the endpoint ports associated with the identified function number; and

an upstream buffer disposed in a second communication pathway from an upstream output of each of the endpoint ports to an upstream input of the root port, wherein the upstream buffer queues transaction layer packets received from the upstream output of each endpoint port, and wherein the transaction layer packets in the upstream buffer are directed to the upstream input of the root port, wherein the root port, the plurality of endpoint ports, the upstream buffer and the downstream buffer are compliant with a layered protocol, wherein the root port manages a data link layer and a physical layer of the layered protocol for serial communication with the root complex, and wherein each endpoint port manages the data link layer and the physical layer of the layered protocol for serial communication with the endpoint device connected to the endpoint port.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2025
From: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LIMITED
To: LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
Reel/Frame 069869/0614 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2021
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD
To: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LTD
Reel/Frame 055938/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 12, 2016
From: COSBY, DAVID W.; HINKLE, JONATHAN R.; VOJNOVICH, THEODORE B.
To: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
Reel/Frame 039998/0151 →
Continuity (1)
Related Publication 20180101498A1 · Apr 12, 2018