IP Library Granted Patent US 12,007,921
Granted Patent B2
US 12,007,921 · App. 17/979,013 · Granted Jun 11, 2024

Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Inventors: Daniel Marcovitch (Yokneam Illit, IL); Eliav Bar-Ilan (Or Akiva, IL); Ran Avraham Koren (Beijing, CN); Liran Liss (Atzmon-Segev, IL); Oren Duer (Kochav Yair, IL); Shahaf Shuler (Kibbutz Lochamei Hagetaot, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
G06F13/28G06F13/4221G06F2213/0024
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,007,921
App. No.
17/979,013
Granted
Jun 11, 2024
Kind
B2
Abstract

A network adapter includes a network interface, a bus interface, a hardware-implemented data-path and a programmable Data-Plane Accelerator (DPA). The network interface is to communicate with a network. The bus interface is to communicate with an external device over a peripheral bus. The hardware-implemented data-path includes a plurality of packet-processing engines to process data units exchanged between the network and the external device. The DPA is to expose on the peripheral bus a User-Defined Peripheral-bus Device (UDPD), to run user-programmable logic that implements the UDPD, and to process transactions issued from the external device to the UDPD by reusing one or more of the packet-processing engines of the data-path.

Claims (76)

1. A network adapter, comprising:

a network interface, to communicate with a network;

a bus interface, to communicate with an external device over a peripheral bus;

a hardware-implemented data-path, comprising a plurality of packet-processing engines, to process data units exchanged between the network and the external device; and

a programmable Data-Plane Accelerator (DPA), to expose on the peripheral bus a User-Defined Peripheral-bus Device (UDPD), to run user-programmable logic that implements the UDPD, and to process transactions issued from the external device to the UDPD by reusing at least a given packet-processing engine among the packet-processing engines of the data-path,

wherein (i) in processing the data units, the given packet-processing engine in the data-path is to be triggered by a preceding packet-processing engine in the data-path, and (ii) in processing the transactions issued to the UDPD, the given packet-processing engine is to be invoked by the DPA.

2. The network adapter according to claim 1 , wherein the UDPD is one of:

a network adapter;

a storage device;

a Graphics Processing Unit (GPU); and

a Field Programmable Gate Array (FPGA).

3. The network adapter according to claim 1 , wherein:

in processing the data units, the data-path is to communicate over the peripheral bus with a network-adapter driver running on the external device; and

in processing the transactions issued to the UDPD, the DPA is to communicate over the peripheral bus with a UDPD driver running on the external device.

4. The network adapter according to claim 1 , wherein:

the given packet-processing engine comprises a hardware-implemented transport engine to perform transport-protocol checks and/or offloads on incoming communication data units and to select receive-queues for the incoming communication data units; and

the DPA is to re-use the transport engine to perform transport-protocol checks and/or offloads on incoming UDPD data units associated with the UDPD, and to select receive-queues for the incoming UDPD data units.

5. The network adapter according to claim 1 , wherein:

the given packet-processing engine comprises a hardware-implemented address-translation engine to translate between virtual addresses in a first address space and addresses assigned to the communication data units in a second address space; and

the DPA is to re-use the address-translation engine to translate between virtual addresses in a third address space and addresses assigned to UDPD data units associated with the UDPD in a fourth address space.

6. The network adapter according to claim 1 , wherein:

the given packet-processing engine comprises at least one hardware-implemented Direct Memory Access (DMA) engine to scatter data from at least some of the communication data units to memory, and to transfer completion notifications for the communication data units; and

the DPA is to re-use the DMA engine to scatter data from UDPD data units, associated with the UDPD, to the memory, and to transfer completion notifications for the UDPD data units.

7. The network adapter according to claim 1 , wherein:

the given packet-processing engine comprises a hardware-implemented message-signaled-interrupt engine to trigger the external device with interrupts upon completions of processing of at least some of the data units; and

the DPA is to re-use the message-signaled-interrupt engine to trigger the external device with interrupts upon completions of processing of UDPD data units associated with the UDPD.

8. The network adapter according to claim 1 , wherein:

the given packet-processing engine comprises an interrupt-moderation engine to throttle a rate of interrupts that indicate completions of at least some of the communication data units; and

the DPA is to re-use the interrupt-moderation engine to throttle a rate of the interrupts that indicate the completions of the UDPD data units.

9. The network adapter according to claim 1 , wherein:

the given packet-processing engine comprises a doorbell-aggregation engine to coalesce doorbells relating to the communication data units; and

the DPA is to re-use the doorbell-aggregation engine to coalesce doorbells relating to UDPD data units associated with the UDPD.

10. A method in a network adapter, the method comprising:

communicating with a network;

communicating with an external device over a peripheral bus;

using a hardware-implemented data-path that includes a plurality of packet-processing engines, processing data units exchanged between the network and the external device; and

using a programmable Data-Plane Accelerator (DPA), exposing on the peripheral bus a User-Defined Peripheral-bus Device (UDPD), running user-programmable logic that implements the UDPD, and processing transactions issued from the external device to the UDPD by reusing at least a given packet-processing engine among the packet-processing engines of the data-path,

wherein (i) in processing the data units, the given packet-processing engine in the data-path is to be triggered by a preceding packet-processing engine in the data-path, and (ii) in processing the transactions issued to the UDPD, the given packet-processing engine is to be invoked by the DPA.

11. The method according to claim 10 , wherein the UDPD is one of:

a network adapter;

a storage device;

a Graphics Processing Unit (GPU); and

a Field Programmable Gate Array (FPGA).

12. The method according to claim 10 , wherein:

processing the data units comprises communicating over the peripheral bus with a network-adapter driver running on the external device; and

processing the transactions issued to the UDPD comprises communicating over the peripheral bus with a UDPD driver running on the external device.

13. The method according to claim 10 , wherein:

the given packet-processing engine comprises a hardware-implemented transport engine;

processing the data units comprises, by the hardware-implemented transport engine, performing transport-protocol checks and/or offloads on incoming communication data units and selecting receive-queues for the incoming communication data units; and

re-using the transport engine by the DPA comprises performing transport-protocol checks and/or offloads on incoming UDPD data units associated with the UDPD, and selecting receive-queues for the incoming UDPD data units.

14. The method according to claim 10 , wherein:

the given packet-processing engine comprises a hardware-implemented address-translation engine;

processing the data units comprises, by the hardware-implemented address-translation engine, translating between virtual addresses in a first address space and addresses assigned to the communication data units in a second address space; and

re-using the address-translation engine by the DPA comprises translating between virtual addresses in a third address space and addresses assigned to UDPD data units associated with the UDPD in a fourth address space.

15. The method according to claim 10 , wherein:

the given packet-processing engine comprises a hardware-implemented Direct Memory Access (DMA) engine;

processing the data units comprises, by the hardware-implemented Direct Memory Access (DMA) engine, scattering data from at least some of the communication data units to memory, and transferring completion notifications for the communication data units; and

re-using the DMA engine by the DPA comprises scattering data from UDPD data units, associated with the UDPD, to the memory, and transferring completion notifications for the UDPD data units.

16. The method according to claim 10 , wherein:

the given packet-processing engine comprises a hardware-implemented message-signaled-interrupt engine;

processing the data units comprises, by the hardware-implemented message-signaled-interrupt engine, triggering the external device with interrupts upon completions of processing of at least some of the data units; and

re-using the message-signaled-interrupt engine by the DPA comprises triggering the external device with interrupts upon completions of processing of UDPD data units associated with the UDPD.

17. The method according to claim 10 , wherein:

the given packet-processing engine comprises a hardware-implemented interrupt-moderation engine;

processing the data units comprises, by the hardware-implemented interrupt-moderation engine, throttling a rate of interrupts that indicate completions of at least some of the communication data units; and

re-using the interrupt-moderation engine by the DPA comprises throttling a rate of the interrupts that indicate the completions of the UDPD data units.

18. The method according to claim 10 , wherein:

the given packet-processing engine comprises a doorbell-aggregation engine;

processing the data units comprises, by the doorbell-aggregation engine, coalescing doorbells relating to the communication data units; and

re-using the doorbell-aggregation engine by the DPA comprises coalescing doorbells relating to UDPD data units associated with the UDPD.

19. A network adapter, comprising:

a network interface, to communicate with a network;

a bus interface, to communicate with an external device over a peripheral bus;

a hardware-implemented data-path, comprising a plurality of packet-processing engines, to process data units exchanged between the network and the external device; and

a programmable Data-Plane Accelerator (DPA), to run user-programmable logic that implements a User-Defined Peripheral-bus Device (UDPD), including reusing, in implementing the UDPD, at least a given packet-processing engine among the packet-processing engines of the data-path,

wherein (i) in processing the data units, the given packet-processing engine in the data-path is to be triggered by a preceding packet-processing engine in the data-path, and (ii) in processing transactions issued to the UDPD, the given packet-processing engine is to be invoked by the DPA.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2022
From: MARCOVITCH, DANIEL; BAR-ILAN, ELIAV; KOREN, RAN AVRAHAM; LISS, LIRAN; DUER, OREN; SHULER, SHAHAF
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 061624/0918 →
Continuity (1)
Related Publication 20240143528A1 · May 2, 2024
Cited By (1)
US 12,547,543