# US 12,216,575 B2 · Patterned memory-network data transfer

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,216,575 B2
- Document ID: US12216575B2
- Status: Granted
- Kind: B2
- Application number: 17/858,104
- Filed: 2022-07-06
- Published: 2024-01-11
- Granted: 2025-02-04
- Earliest claimed: 2022-07-06
- Assignees: Mellanox Technologies, Ltd.
- Applicants: Mellanox Technologies, Ltd.
- Inventors: Daniel Marcovitch; Gil Bloch; Richard Graham; Yossef Itigin; Ortal Ben Moshe; Roman Nudelman
- Web page: https://patentgrep.com/patent/US12216575B2

## CPC

- G06F 12/0653: {with centralised address assignment}
- G06F 12/0607: {Interleaved addressing}
- G06F 12/0835: {for main memory peripheral accesses (e.g. I/O or DMA)}
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 13/4027: {using bus bridges (G06F13/4022 takes precedence)}
- G06F 13/404: {with address mapping}
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- H04L 67/141: Setup of application sessions (admission control or resource allocation in data switching networks H04L47/70)
- G06F 2212/1016: Performance improvement
- G06F 2212/154: Networked environment
- G06F 2212/657: Virtual address space management
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A network device includes a first interface, a second interface, and circuitry. The first interface is configured to communicate at least with a memory. The second interface is configured to communicate over a network with a peer network device. The circuitry is configured to receive a request to transfer data over the network between the memory and the peer network device in accordance with (i) a pattern of offsets to be accessed in the memory and (ii) a memory key representing a memory space to be accessed using the pattern, and to transfer the data in accordance with the request.

## Claims

### Claim 1

A network device, comprising:
a first interface, configured to communicate at least with a memory;
a second interface, configured to communicate over a network with a peer network device; and
circuitry, configured to pre-register a plurality of patterns of offsets, to pre-associate a memory key representing a memory space to be accessed with a given pattern from the plurality of patterns of offsets, to receive a request to transfer data over the network between the memory and the peer network device, wherein the request indicates the memory key, but not the given pattern pre-associated with the memory key, and to transfer the data in accordance with the request using the memory key and the given pattern pre-associated with the memory key.

### Claim 2 (depends on 1)

The network device according to claim 1, wherein the circuitry is configured to receive the request as a work-request via the first interface.

### Claim 3 (depends on 1)

The network device according to claim 1, wherein each of the pre-registered patterns of offsets comprises one of (i) a pattern that accesses a contiguous memory space, (ii) a pattern that accesses a non-contiguous memory space, and (iii) a strided pattern.

### Claim 4 (depends on 1)

The network device according to claim 1, wherein the request specifies multiple memory keys representing respective memory spaces to be accessed using the pattern.

### Claim 5 (depends on 1)

The network device according to claim 1, wherein the memory space represented by the memory key is one of a virtual memory space and a physical memory space.

### Claim 6 (depends on 1)

The network device according to claim 1, wherein, in response to receiving a re-association instruction, the circuitry is configured to associate the memory key with a different pattern.

### Claim 7 (depends on 1)

The network device according to claim 1, wherein the pattern is pre-associated in the network device with at least one additional memory key.

### Claim 8 (depends on 1)

The network device according to claim 1, wherein the request specifies a starting virtual address or initial offset parameter for the pattern.

### Claim 9 (depends on 1)

The network device according to claim 1, wherein the pattern specifies the offsets using a nested representation that comprises at least one internal pattern.

### Claim 10 (depends on 1)

The network device according to claim 1, wherein the pattern specifies the offsets using an iterative representation that defines (i) a basic pattern to be iterated multiple times, (ii) a number of times the basic pattern is to be iterated, and (iii) an offset between successive iterations of the basic pattern.

### Claim 11 (depends on 1)

The network device according to claim 1, wherein the request is associated with a scatter or gather command.

### Claim 12 (depends on 1)

The network device according to claim 1, wherein the request is associated with an InfiniBand transaction.

### Claim 13 (depends on 1)

The network device according to claim 1, wherein the request is associated with an Ethernet transaction.

### Claim 14

A method for data transfer, comprising:
in a network device, communicating with a memory and, over a network, with a peer network device;
pre-registering, in the network device, a plurality of patterns of offsets;
pre-associating a memory key representing a memory space to be accessed with a given pattern from the plurality of patterns of offsets;
receiving in the network device a request to transfer data over the network between the memory and the peer network device, wherein the request indicates the memory key, but not the given pattern pre-associated with the memory key; and
transferring the data in accordance with the request using the memory key and the given pattern pre-associated with the memory key.

### Claim 15 (depends on 14)

The method according to claim 14, wherein receiving the request comprises receiving the request as a work-request via the first interface.

### Claim 16 (depends on 14)

The method according to claim 14, wherein each of the multiple pre-registered patterns of offsets comprises one of (i) a pattern that accesses a contiguous memory space, (ii) a pattern that accesses a non-contiguous memory space, and (iii) a strided pattern.

### Claim 17 (depends on 14)

The method according to claim 14, wherein the request specifies multiple memory keys representing respective memory spaces to be accessed using the pattern.

### Claim 18 (depends on 14)

The method according to claim 14, wherein the memory space represented by the memory key is one of a virtual memory space and a physical memory space.

### Claim 19 (depends on 14)

The method according to claim 14, and comprising, in response to receiving a re-association instruction, associating the memory key with a different pattern.

### Claim 20 (depends on 14)

The method according to claim 14, wherein the pattern is pre-associated in the network device with at least one additional memory key.

### Claim 21 (depends on 14)

The method according to claim 14, wherein the request specifies a starting virtual address or initial offset parameter for the pattern.

### Claim 22 (depends on 14)

The method according to claim 14, wherein the pattern specifies the offsets using a nested representation that comprises at least one internal pattern.

### Claim 23 (depends on 14)

The method according to claim 14, wherein the pattern specifies the offsets using an iterative representation that defines (i) a basic pattern to be iterated multiple times, (ii) a number of times the basic pattern is to be iterated, and (iii) an offset between successive iterations of the basic pattern.

### Claim 24 (depends on 14)

The method according to claim 14, wherein the request is associated with a scatter or gather command.

### Claim 25 (depends on 14)

The method according to claim 14, wherein the request is associated with an InfiniBand transaction.

### Claim 26 (depends on 14)

The method according to claim 14, wherein the request is associated with an Ethernet transaction.
