IP Library › Granted Patent US 12,050,944
Granted Patent B2
US 12,050,944 · App. 17/307,747 · Granted Jul 30, 2024

Network attached MPI processing architecture in smartnics

Inventors: Guanwen Zhong (Singapore, SG); Chengchen Hu (Singapore, SG); Gordon John Brebner (Monte Sereno, CA)
Assignee: XILINX, INC.
G06F9/546H04L61/2525H04L69/22
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 12,050,944
App. No.
17/307,747
Granted
Jul 30, 2024
Kind
B2
Abstract

Embodiments herein describe a describe an interface shell in a SmartNIC that reduces data-copy overhead in CPU-centric solutions that rely on hardware compute engine (which can include one or more accelerators). The interface shell offloads tag matching and address translation without CPU involvement. Moreover, the interface shell enables the compute engine to read messages directly from the network without extra data copy—i.e., without first copying the data into the CPU's memory.

Claims (45)

1. A network interface card (NIC), comprising:

a Message Passing Interface (MPI) shell comprising circuitry configured to:

receive a plurality of packets corresponding to an MPI message;

process the plurality of packets to reconstruct the MPI message; and

forward data contained in the MPI message to compute circuitry for processing without first copying the data contained in the MPI message into a memory corresponding to a central processing unit (CPU), wherein the CPU is disposed in a same compute node as the NIC, the compute circuitry is disposed in the NIC, and the compute circuitry comprises one or more user-defined hardware accelerators,

wherein the MPI shell further comprises:

a tag matcher configured to receive the plurality of packets corresponding to the MPI message as input and generate address lookup requests; and

an address translator configured to receive the address lookup requests from the tag matcher and generate addresses allocated either from the CPU or a memory manager disposed in the address translator.

2. The NIC of claim 1 , wherein the compute circuitry and the MPI shell are disposed on a same integrated circuit in the NIC.

3. The NIC of claim 1 , wherein the MPI shell is configured to perform tag matching and address translation for the data contained in the MPI message without CPU involvement.

4. The NIC of claim 1 , wherein the MPI shell further comprises:

a packet classifier configured to sniff the plurality of packets received from a network to identify the MPI message and generate metadata for the plurality of packets corresponding to the MPI message, wherein the metadata contains information used by the tag matcher to generate the address lookups.

5. The NIC of claim 4 , wherein the MPI shell further comprises:

a data mover configured to receive the addresses from the address translator and store the data in the MPI message at the addresses in a target memory shared with the compute circuitry.

6. The NIC of claim 5 , wherein the MPI shell further comprises:

a data controller comprising a memory controller coupled to a local memory and an interconnect, wherein the data controller is coupled to an output of the data mover, and wherein the interconnect serves as an interface between the MPI shell and the CPU.

7. A NIC, comprising:

hardware compute circuitry; and

an MPI shell comprising circuitry configured to:

receive a plurality of packets corresponding to an MPI message;

process the plurality of packets to reconstruct the MPI message;

forward data contained in the MPI message to the compute circuitry for processing; and

receive instructions from a CPU external to the NIC that instruct the compute circuitry to process the data contained in the MPI message, wherein the hardware compute circuitry comprises one or more user-defined hardware accelerators,

wherein the MPI shell further comprises:

a tag matcher configured to receive the plurality of packets corresponding to the MPI message as input and generate address lookup requests; and

an address translator configured to receive the address lookup requests from the tag matcher and generate addresses allocated either from the CPU or a memory manager disposed in the address translator.

8. The NIC of claim 7 , wherein the compute circuitry and the MPI shell are disposed on a same integrated circuit in the NIC.

9. The NIC of claim 7 , wherein the MPI shell is configured to perform tag matching and address translation for the data contained in the MPI message without CPU involvement.

10. The NIC of claim 7 , wherein the MPI shell further comprises:

a packet classifier configured to sniff the plurality of packets received from a network to identify the MPI message and generate metadata for the plurality of packets corresponding to the MPI message, wherein the metadata contains information used by the tag matcher to generate the address lookups.

11. The NIC of claim 10 , wherein the MPI shell further comprises:

a data mover configured to receive the addresses from the address translator and store the data contained in the MPI message at the addresses in a target memory shared with the compute circuitry.

12. The NIC of claim 11 , wherein the MPI shell further comprises:

a data controller comprising a memory controller coupled to a local memory and an interconnect, wherein the data controller is coupled to an output of the data mover, and wherein the interconnect serves as an interface between the MPI shell and the CPU.

13. A NIC, comprising:

an interface shell comprising circuitry configured to:

receive a plurality of packets corresponding to a message in a distributed compute system where tasks are transmitted between nodes in the distributed compute system using messages;

process the plurality of packets to reconstruct the message; and

forward data contained in the message to hardware compute circuitry for processing without first copying the data contained in the message into a memory corresponding to a central processing unit (CPU), wherein the CPU is disposed in a same compute node as the NIC, the compute circuitry is disposed in the NIC, and the compute circuitry comprises one or more user-defined hardware accelerators,

wherein the interface shell further comprises:

a tag matcher configured to receive the plurality of packets corresponding to the message as input and generate address lookup requests; and

an address translator configured to receive the address lookup requests from the tag matcher and generate addresses allocated either from the CPU or a memory manager disposed in the address translator.

14. The NIC of claim 13 , wherein the compute circuitry and the interface shell are disposed on a same integrated circuit in the NIC.

15. The NIC of claim 13 , wherein the interface shell is configured to perform tag matching and address translation for the data contained in the message without CPU involvement.

16. The NIC of claim 13 , wherein the interface shell is configured to receive instructions from the CPU that instruct the compute circuitry to process the data contained in the message.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2021
From: ZHONG, GUANWEN; HU, CHENGCHEN; BREBNER, GORDON JOHN
To: XILINX, INC.
Reel/Frame 056165/0716 →
Continuity (1)
Related Publication 20220358002A1 · Nov 10, 2022