IP Library Granted Patent US 10,275,375
Granted Patent B2
US 10,275,375 · App. 13/792,083 · Granted Apr 30, 2019

Network interface controller with compression capabilities

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,275,375
App. No.
13/792,083
Granted
Apr 30, 2019
Kind
B2
Abstract

A method for communication includes receiving in a network interface controller (NIC) from a host processor, which has a local host memory and is connected to the NIC by a local bus, a remote direct memory access (RDMA) compress-and-write command, specifying a source memory buffer in the local host memory and a target memory address. In response to the command, data are read from the specified buffer into the NIC, compressed in the NIC, and conveyed from the NIC to the target memory address.

Claims (31)

1. A method for compression, comprising:

submitting by a client process running on a host processor, which has a local host memory, a work request for performing compression by a network interface controller (NIC) connected to the host processor by a local bus, wherein the NIC connects the host processor to a network, and is configured to receive both transmission and compression work elements, including transmission-only work elements, which do not require compression, and compression-only work elements, which do not require transmission to a remote node;

placing a corresponding work element in a work queue, responsive to the submitted work request, the work element specifying a source memory buffer in the local host memory from which data referred to by the corresponding work element is to be read and a target memory address, in which the data referred to by the corresponding work element is to be stored compressed;

receiving work elements, by the NIC, from the work queue, each work element specifying a source memory buffer, a target memory address and an operation; and

for each received work element, reading data referred to by the received work element from the specified source memory buffer in the local host memory into the NIC, and performing the specified operation on the data that was read,

wherein performing the specified operation for each received work element comprises, for one or more work elements in which the specified operation is compression, compressing data referred to by the one or more work elements in the NIC, and storing the compressed data from the NIC to the target memory address, and for one or more work elements in which the specified operation is transmission, loading data referred to by the one or more work elements into packets and transmitting the packets over the network.

2. A method for communication, comprising:

submitting by a client process running on a host processor, which has a local host memory, a work request for performing decompression by a network interface controller (NIC) connected to the host processor by a local bus, wherein the NIC connects the host processor to a network, and is configured to receive both transmission and decompression work elements, including transmission-only work elements, which do not require decompression, and decompression-only work elements, which do not require transmission to a remote node;

placing a corresponding work element in a work queue, responsive to the submitted work request, the work element specifying a source memory buffer containing compressed data and a target memory address in the local host memory;

receiving work elements, by the NIC, from the work queue, each work element specifying a source memory buffer, a target memory address and an operation; and

for each received work element, reading compressed data from the specified source memory buffer into the NIC, and performing the specified operation on the compressed data from the specified source memory buffer,

wherein performing the specified operation for each received work element comprises, for one or more work elements in which the specified operation is decompression, decompressing compressed data referred to by the one or more work elements in the NIC, and conveying the decompressed data from the NIC to the target memory address in the local host memory, and for one or more work elements in which the specified operation is transmission, loading data referred to by the one or more work elements into packets and transmitting the packets over the network.

3. A network interface controller (NIC), comprising:

a network interface, configured to transmit and receive data packets over a network;

a host interface, configured to be connected via a local bus to a host processor and a local host memory of the host processor; and

processing circuitry, which is coupled between the network interface and the host interface and is configured to receive, via the host interface, work element commands in a queue, the work element commands including both transmission commands and compression commands, including transmission-only commands, which do not require compression, and compression-only commands, which do not require transmission to a remote node, which commands specify a source memory buffer in the local host memory, a target memory address and an operation,

wherein in response to the work element command in the work queue being identified as a compress-and-write command, the processing circuitry is configured to read data from the specified source memory buffer in the local host memory, to compress the data, and to store the compressed data to the target memory address, and for work elements in which the specified operation includes transmission, the processing circuitry is configured to load data from the source memory buffer into packets and transmit the packets over the network.

4. The NIC according to claim 3 , wherein the processing circuitry is configured to receive, via the host interface, a work element including a read-and-decompress command, specifying a further source memory buffer containing further compressed data and a further target memory address in the local host memory, and in response to the command, to read the further compressed data from the further source memory buffer, to decompress the further compressed data, and to convey the decompressed data to the further target memory address in the local host memory.

5. The NIC according to claim 4 , wherein the further source memory buffer is in the local host memory of the host processor.

6. The NIC according to claim 4 , wherein the further source memory buffer is in a remote host memory of a remote network node, and wherein the read-and-decompress command causes the processing circuitry to receive the further compressed data via the network interface from one or more data packets transmitted over the network from the remote network node.

7. The NIC according to claim 3 , wherein the processing circuitry is configured to compress the data using a lossy compression algorithm.

8. The NIC according to claim 3 , wherein the processing circuitry is configured to execute both read and write commands which do not involve compression, and compress-and-write and read-and-decompress commands.

9. The NIC according to claim 3 , wherein the processing circuitry supports two or more different compression algorithms, and is configured to determine in response to a compress-and-write command a compression algorithm, from the two or more different algorithms, and to use the determined compression algorithm in compressing the data from the specified source memory buffer.

10. The NIC according to claim 9 , wherein the processing circuitry is configured to determine the compression algorithm to be used based on an indication of a desired compression algorithm in the work element in the work queue.

11. The method according to claim 1 , wherein compressing the data in the NIC comprises compressing in accordance with a lossy compression algorithm.

12. The method according to claim 1 , comprising determining a compression algorithm, from two or more different compression algorithms supported by the NIC, to be used for data in the memory buffer specified by the command, based on an indication in the work element and wherein compressing the data in the NIC comprises compressing in accordance with the determined compression algorithm.

13. The method according to claim 2 , wherein decompressing the compressed data in the NIC comprises decompressing using a method corresponding to a lossy compression algorithm.

14. The method according to claim 1 , wherein conveying the compressed data from the NIC to the target memory address comprises conveying the compressed data in packets including headers indicating source and target queue pair (QP) information.

15. The method according to claim 1 , further comprising receiving in the NIC a read-and-decompress command, specifying a further source memory buffer containing further compressed data and a further target memory address in the local host memory, and in response to the command, reading the further compressed data from the further source memory buffer, to decompress the further compressed data, and to convey the decompressed data to the further target memory address in the local host memory.

16. The method according to claim 15 , wherein the further source memory buffer is in a remote host memory of a remote network node, and wherein reading the further compressed data comprises receiving the further compressed data in the NIC, through a network interface of the NIC, in one or more data packets transmitted from the remote network node.

17. The method according to claim 1 , wherein the NIC is connected to the host processor and the local host memory through a peripheral connection bus.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2013
From: AYOUB, ALI
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 029957/0711 →