IP Library Granted Patent US 9,146,890
Granted Patent B1
US 9,146,890 · App. 13/750,991 · Granted Sep 29, 2015

Method and apparatus for mapped I/O routing in an interconnect switch

Inventors: David Alan Brown (Carp, CA); Peter Z. Onufryk (Flanders, NJ)
Assignee: PMC—SIERRA US, INC.
G06F13/4022
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,146,890
App. No.
13/750,991
Granted
Sep 29, 2015
Kind
B1
Abstract

A system and method are disclosed for a flexible routing engine in a PCIe switch. The system may include a switch manager that is enabled, through firmware, to configure one or more routing tables associated with a switch stack of a PCIe switch. To enable non-transparent bridging and non-standard routing, such as mapped I/O routing, the method may include receiving a transaction layer packet at a mapped I/O routed port of a PCIe switch, and performing translation of the requester ID of the packet utilizing tables that are updated by the firmware of the switch manager to route the packet through the switch.

Claims (43)

1. A method for mapped I/O routing in an interconnect switch, the method comprising:

receiving a transaction layer packet at a mapped I/O enabled port of a switch, the transaction layer packet comprising a memory address and a requester identification (ID);

when the transaction layer packet is a memory address request, searching an ID search table using the requester ID of the transaction layer packet to identify a translated routing port;

routing the transaction layer packet to a translated routing port identified in the ID search table;

when the transaction layer packet is an I/O address request, not using an I/O search table to route the transaction layer packet;

translating the memory address at the translated routing port by accessing an internal address translation table to generate a translated base address and adding the translated base address to an offset of the memory address, wherein the translated base address and the offset of the memory address comprise one or more overlapping bits and adding the translated base address to the offset of the memory address overwrites the overlapping bits of the translated base address with the offset of the memory address to generate a translated memory address; and

translating the requester ID at the translated routing port to generate a translated requester ID.

2. The method of claim 1 , wherein the transaction layer packet is a Peripheral Component Interconnect Express (PCIe) transaction layer packet.

3. The method of claim 1 , wherein the switch is a RapidIO switch.

4. The method of claim 1 , wherein translating the requester ID at the translated routing port to generate a translated requester ID further comprises searching an internal REQID search table for a match with the requester ID BDF (bus, device, function) number.

5. The method of claim 1 , further comprising:

generating a completion;

untranslating the translated requester ID to generate an untranslated requester ID; and

routing the completion to the mapped I/O enabled port based upon the untranslated requester ID.

6. The method of claim 1 , wherein the ID search table is implemented in firmware of the interconnect switch.

7. The method of claim 1 further comprising:

when the transaction layer packet is an implicit request, searching an implicit search table to identify a translated routing port of the at least one translated routing port.

8. The method of claim 1 further comprising:

when the transaction layer packet is an implicit request, searching an implicit search table to identify a translated routing port of the at least one translated routing port; and

when the results from the search of the translated routing port indicate routing by requester ID, searching the ID search table using the requester ID of the transaction layer packet to identify a translated routing port of the at least one translated routing port.

9. A switch comprising:

at least one translated routing port;

at least one mapped I/O enabled port coupled to the at least one translated routing port, the mapped I/O enabled port configured for receiving a transaction layer packet, the transaction layer packet comprising a memory address and a requester identification (ID), the mapped I/O enabled port configured for searching an ID search table using the requester identification (ID) of the transaction layer packet to identify a translated routing port of the at least one translated routing port when the transaction layer packet is a memory address request, for routing the transaction layer packet to the translated routing port identified in the ID search table and for not using an I/O search table to route the transaction layer packet when the transaction layer packet is an I/O address request; and

wherein the translated routing port is configured for translating the memory address of the transaction layer packet at the translated routing port by accessing an internal address translation table to generate a translated base address and adding the translated base address to an offset of the memory address, wherein the translated base address and the offset of the memory address comprise one or more overlapping bits and adding the translated base address to the offset of the memory address overwrites the overlapping bits of the translated base address with the offset of the memory address to generate a translated memory address and translating the requester ID at the translated routing port to generate a translated requester ID.

10. The switch of claim 9 , wherein the transaction layer packet is a Peripheral Component Interconnect Express (PCIe) transaction layer packet.

11. The switch of claim 9 , wherein the mapped I/O enabled port is configured for searching an implicit search table to identify a translated routing port of the at least one translated routing ports when the transaction layer packet is an implicit request and is configured to route the transaction layer packet to the translated routing port identified in the implicit search table when the transaction layer packet is an implicit request.

12. The switch of claim 9 , wherein the identified translated routing port is further configured for translating the requester ID to generate a translated requester ID by searching an internal requester ID search table for a match with the requester ID BDF (bus, device, function) number.

13. The switch of claim 9 , wherein the translated routing port is further for:

generating a completion;

untranslating the translated requester ID to generate an untranslated requester ID; and

routing the completion to the mapped I/O enabled port based upon the untranslated requester ID.

14. The switch of claim 9 , wherein the ID search table is implemented in firmware of the interconnect switch.

15. The switch of claim 9 , wherein the switch is a RapidIO switch.

16. The switch of claim 9 wherein the mapped I/O enabled port is configured for searching an implicit search table to identify a translated routing port of the at least one translated routing port when the transaction layer packet is an implicit request and when the results from the search of the translated routing port indicate routing by requester ID the mapped I/O enabled port is configured for searching the ID search table using the requester ID of the transaction layer packet to identify a translated routing port of the at least one translated routing port.

17. A switch for mapped I/O routing, the switch comprising:

at least one translated routing port;

at least one mapped I/O enabled port coupled to the at least one translated routing port, the mapped I/O enabled port configured for receiving a Peripheral Component Interconnect Express (PCIe) transaction layer packet, the transaction layer packet comprising a memory address and a requester identification (ID), the mapped I/O enabled port configured for searching an ID search table using the requester identification (ID) of the PCIe transaction layer packet to identify a translated routing port of the at least one translated routing port when the PCIe transaction layer packet is a memory address request, for routing the PCIe transaction layer packet to the translated routing port identified in the ID search table when the PCIe transaction layer packet is a memory address request, for searching an implicit search table to identify a translated routing port of the at least one translated routing ports when the PCIe transaction layer packet is an implicit request, for routing the PCIe transaction layer packet to the translated routing port identified in the implicit search table when the PCIe transaction layer packet is an implicit request and for not using an I/O search table to route the transaction layer packet when the transaction layer packet is an I/O address request; and

and wherein the translated routing port is further configured for translating the memory address of the identified PCIe transaction layer packet at the translated routing port by accessing an internal address translation table to generate a translated base address and adding the translated base address to an offset of the memory address, wherein the translated base address and the offset of the memory address comprise one or more overlapping bits and adding the translated base address to the offset of the memory address overwrites the overlapping bits of the translated base address with the offset of the memory address to generate a translated memory address; and translating the requester ID at the translated routing port to generate a translated requester ID.

18. The switch of claim 17 , wherein the translated routing port is further configured for translating the requester ID to generate a translated requester ID by searching an internal requester ID search table for a match with the requester ID BDF (bus, device, function) number.

19. The switch of claim 17 , wherein the translated routing port is further configured for:

generating a completion;

untranslating the translated requester ID to generate an untranslated requester ID; and

routing the completion to the mapped I/O enabled port based upon the untranslated requester ID.

Assignments (9)
RELEASE OF SECURITY INTEREST Recorded May 29, 2018
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.; MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 046251/0271 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME AND ADDRESS PREVIOUSLY RECORDED AT REEL: 037961 FRAME: 0519. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Mar 15, 2016
From: PMC-SIERRA US, INC.
To: MICROSEMI STORAGE SOLUTIONS (US), INC.
Reel/Frame 038102/0874 →
CHANGE OF NAME Recorded Mar 1, 2016
From: PMC-SIERRA US, INC.
To: MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 037961/0519 →
PATENT SECURITY AGREEMENT Recorded Feb 3, 2016
From: MICROSEMI STORAGE SOLUTIONS, INC. (F/K/A PMC-SIERRA, INC.); MICROSEMI STORAGE SOLUTIONS (U.S.), INC. (F/K/A PMC-SIERRA US, INC.)
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037689/0719 →
RELEASE OF SECURITY INTEREST Recorded Feb 1, 2016
From: BANK OF AMERICA, N.A.
To: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
Reel/Frame 037675/0129 →
SECURITY INTEREST IN PATENTS Recorded Aug 6, 2013
From: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 030947/0710 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING AND RECEIVING PARTIES PREVIOUSLY RECORDED ON REEL 030832 FRAME 0604. ASSIGNOR(S) HEREBY CONFIRMS THE CONVEYING PARTY DATA: INTEGRATED DEVICE TECHNOLOGY, INC. TECEIVING: PMC-SIERRA US, INC. Recorded Jul 23, 2013
From: INTEGRATED DEVICE TECHNOLOGY, INC.
To: PMC-SIERRA US, INC.
Reel/Frame 030919/0040 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2013
From: PMC-SIERRA US, INC.
To: INTEGRATED DEVICE TECHNOLOGY, INC.
Reel/Frame 030832/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2013
From: BROWN, DAVID ALAN; ONUFRYK, PETER Z.
To: INTEGRATED DEVICE TECHNOLOGY, INC.
Reel/Frame 029699/0371 →