IP Library › Granted Patent US 9,152,591
Granted Patent B2
US 9,152,591 · App. 14/019,777 · Granted Oct 6, 2015

Universal PCI express port

Inventors: Michael B. Galles (Los Altos, CA); Hemant M. Vinchure (San Jose, CA)
Assignee: CISCO TECHNOLOGY
G06F13/385G06F13/409G06F13/4022H04L29/12367G06F2213/0026G06F2213/0058G06F2213/3808
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 9,152,591
App. No.
14/019,777
Granted
Oct 6, 2015
Kind
B2
Abstract

Methods and systems are disclosed herein for providing a universal PCIe port. The same port can be configured to accept a PCIe component as a host or an endpoint (device) symmetrically. The PCIe port can be connected to the host interface or the root complex interface if the PCIe connection is to be configured as a host or an endpoint, respectively. A virtual topology can be provided for a host that associates the host with corresponding endpoints. A mapping between virtual addresses of the corresponding endpoints in the virtual topology and local addresses of the corresponding endpoints is provided.

Claims (75)

1. A method for configuring a Peripheral Component Interconnect Express (PCIe) port of a server chassis to accept a PCIe component connected to the PCIe port as a host or an endpoint, the method comprising:

determining whether the PCIe component is communicably connected to the PCIe port as a host or an endpoint;

if the PCIe component is a host:

connecting the host to a host interface in an interconnect fabric;

determining one or more corresponding endpoints for the host;

providing a first virtual topology for the host associating the host with virtual address(es) of one or more corresponding endpoints of the host; and

providing a first mapping between the virtual address(es) of the one or more corresponding endpoints and local address(es) of the corresponding endpoints;

if the PCIe device is an endpoint device:

connecting the endpoint to a root complex interface in the interconnect fabric, wherein the endpoint is addressable by a local address through the root complex interface;

determining a corresponding host of the endpoint and a second virtual topology associated with the corresponding host; and

providing a second mapping between a virtual address in the second virtual topology and the local address of the endpoint;

wherein the first mapping and the second mapping is provided by a proxy processor between the host interface and the root complex interface in the interconnect fabric.

2. The method of claim 1 , wherein connecting the host to the host interface and connecting the endpoint to the root complex interface depending on whether the PCIe component is a host or an endpoint comprises configuring a multiplexer to select either (1) signal upstream connectivity between the PCIe port to the host interface, or (2) signal downstream connectivity between the PCIe port and the root complex interface for the PCIe port, respectively.

3. The method of claim 1 , wherein:

the first virtual topology and the second virtual topology each comprises a PCIe tree associating a host with one or more endpoints.

4. The method of claim 1 , wherein:

virtual address(es) of endpoints are different from the local address(es) of endpoints; and

the first mapping and the second mapping provides translation between virtual address(es) to and/or from local address(es).

5. The method of claim 1 , wherein:

the first virtual topology is separate from the second virtual topology to provide isolated operation of hosts where one of the hosts is not aware of and/or does not interact with another one of the hosts.

6. The method of claim 1 , wherein:

the local address(es) in the first mapping and the second mapping comprises at least one of: bus/device/function (BDF) number(s), memory space address(es), and input/output space address(es) usable to address endpoint (s) connected to the root complex interface.

7. The method of claim 1 , wherein:

the first mapping and the second mapping each comprises a lookup table and/or a content addressable memory table associating virtual addresses with corresponding local addresses of endpoints.

8. The method of claim 1 , wherein:

the PCIe component is one of a plurality of endpoints on the same PCIe component card;

the plurality of endpoints share the same bus/device/function number at the root complex interface as the local address, and the plurality of endpoints correspond to different hosts.

9. The method of claim 8 , further comprising:

providing an upstream translator for performing a reverse lookup of a memory address used in a transaction from an endpoint to determine to which one of the different hosts the memory address corresponds.

10. The method of claim 9 , wherein:

the upstream translator comprises information associating the different hosts with different memory address ranges usable by the plurality of endpoints.

11. An interconnect fabric for configuring a Peripheral Component Interconnect Express (PCIe) port of a server chassis to accept a PCIe component connected as a host or an endpoint, the interconnect fabric comprising:

a port manager configured to:

determine whether the PCIe component communicably connected to the PCIe port as a host or an endpoint;

if the PCIe component is a host, connect the host to a host interface in the interconnect fabric;

if the PCIe component is an endpoint connect the endpoint to a root complex interface in the interconnect fabric, wherein the endpoint is addressable by a local address through the root complex interface;

a PCIe virtualization engine configured to:

if the PCIe component is a host:

determine one or more corresponding endpoints for the host;

provide a first mapping between the virtual address(es) of the one or more corresponding endpoints and local address(es) of the corresponding endpoints;

provide a first mapping between the virtual address(es) of the one or more endpoints of the host and local address(es) of the corresponding endpoints;

if the PCIe component is an endpoint:

determine a corresponding host of the endpoint and a second virtual topology associated with the corresponding host; and

provide a second mapping between a virtual address in the second virtual topology and the local address of the endpoint; and

a proxy processor between the host interface and the root complex interface of the interconnect fabric in the PCIe virtualization engine for providing the first mapping and the second mapping.

12. The interconnect fabric of claim 11 , wherein connecting the host to the host interface and connecting the endpoint to the root complex interface depending on whether the PCIe component is a host or an endpoint by the port manager comprises configuring a multiplexer to select either (1) signal upstream connectivity between the PCIe port to the host interface, or (2) signal downstream connectivity between the PCIe port and the root complex interface for the PCIe port, respectively.

13. The interconnect fabric of claim 11 , wherein:

the first virtual topology and the second virtual topology each comprises a PCIe tree associating a host with one or more endpoints.

14. The interconnect fabric of claim 11 , wherein:

virtual address(es) of endpoints are different from the local address(es) of endpoints; and

the first mapping and the second mapping provides translation between virtual address(es) to and/or from local address(es).

15. The interconnect fabric of claim 11 , wherein:

the local address(es) in the first mapping and the second mapping comprises at least one of: bus/device/function (BDF) number(s), memory space address(es), and input/output space address(es) usable to address endpoint(s) connected to the root complex interface.

16. The interconnect fabric of claim 11 , wherein:

the PCIe device is one of a plurality of endpoints on the same PCIe component card; and

the plurality of endpoints share the same bus/device/function number at the root complex interface as the local address, and the plurality of endpoints correspond to different hosts.

17. The interconnect fabric of claim 16 , further comprising:

an upstream translator in the PCIe virtualization engine for performing a reverse lookup of a memory address used in a transaction from an endpoint to determine to which one of the different hosts the memory address corresponds.

18. The interconnect fabric of claim 17 , wherein:

the upstream translator comprises information associating the different hosts with different memory address ranges usable by the plurality of endpoints.

19. A server chassis, comprising:

a rack unit having one or more PCIe slots for receiving Peripheral Component Interconnect Express (PCIe) component card(s); and

an interconnect fabric for configuring a PCIe port in the server chassis to accept a PCIe component as a host or an endpoint, the interconnect fabric comprising:

a port manager configured to:

determine whether the PCIe component communicably connected to the PCIe port as a host or an endpoint;

if the PCIe component is a host, connect the host to a host interface in the interconnect fabric;

if the PCIe component is an endpoint, connect the endpoint to a root complex interface in the interconnect fabric, wherein the endpoint is addressable by a local address through the root complex interface;

a PCIe virtualization engine configured to:

determine one or more corresponding endpoints for the host;

provide a first virtual topology for the host associating the host with virtual address(es) of one or more endpoints of the host; and

provide a first mapping between the virtual address(es) of the one or more corresponding endpoints and local address(es) of the corresponding endpoints;

determine a corresponding host of the endpoint and a second virtual topology associated with the corresponding host; and

provide a second mapping between a virtual address in the second virtual topology and the local address of the endpoint; and

a proxy processor between the host interface and the root complex interface of the interconnect fabric in the PCIe virtualization engine for providing the first mapping and the second mapping.

20. The server chassis of claim 19 , wherein connecting the host to the host interface and connecting the endpoint to the root complex interface depending on whether the PCIe component is a host or an endpoint by the port manager comprises configuring a multiplexer to select either (1) signal connectivity between the PCIe port to the host interface, or (2) signal connectivity between the PCIe port and the root complex interface for the PCIe port, respectively.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2013
From: GALLES, MICHAEL B.; VINCHURE, HEMANT M.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 031149/0867 →
Continuity (1)
Related Publication 20150074320A1 · Mar 12, 2015