# US 12,182,034 B2 · Method and system for direct memory access

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

- Number: US 12,182,034 B2
- Document ID: US12182034B2
- Status: Granted
- Kind: B2
- Application number: 17/993,736
- Filed: 2022-11-23
- Published: 2023-03-23
- Granted: 2024-12-31
- Earliest claimed: 2020-05-28
- Assignees: Huawei Technologies Co., Ltd.
- Applicants: Huawei Technologies Co., Ltd.
- Inventors: Ben-Shahar Belkar; Alex Margolin; Shai Bergman; Ronen Hyatt; Danny Volkind; Lior Khermosh; Tanya Brokhman
- Web page: https://patentgrep.com/patent/US12182034B2

## CPC

- G06F 12/1081: for peripheral access to main memory, e.g. direct memory access [DMA]
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 2212/1016: Performance improvement
- G06F 2212/1024: Latency reduction
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and apparatus are described. The method comprises receiving a data packet comprising data to be written into the memory of a computing system and address data comprising an address in a set of addresses of a first address space of the computing system, identifying a subset of the set of addresses of the first address space with a subset of addresses in a second address space associated with the memory of the computing system, determining an address from a further subset of addresses in the second address space, writing the data to the region of the memory associated with the determined address and updating an address translation table on the computing system on the basis of the determined address.

## Claims

### Claim 1

A method comprising:
receiving a data packet comprising data to be written into the memory of a computing system and address data comprising an address in a set of addresses of a first address space of the computing system;
identifying a subset of the set of addresses of the first address space with a subset of addresses in a second address space associated with the memory of the computing system;
determining an address from a further subset of addresses in the second address space;
determining a number of addresses of the second address space in the further subset;
replenishing the further subset when a number of addresses falls below a threshold number;
writing the data to the region of the memory associated with the determined address; and
updating an address translation table on the computing system on the basis of the determined address.

### Claim 2 (depends on 1)

The method of claim 1, wherein identifying the subset of addresses of the first address space with the subset of addresses in the second address space comprises:
accessing the address translation table; and
identifying the subset of addresses on the basis of the address translation table.

### Claim 3 (depends on 1)

The method of claim 1, wherein the second address space is a physical address space of the memory of the computing system, and wherein the memory of the computing system is a physical memory.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first address space is a virtual address space.

### Claim 5 (depends on 1)

The method of claim 1, wherein, determining the address from the further subset of addresses in the second address space comprises:
accessing stored address data for one or more addresses in the further subset; and
determining the address in the further subset from the stored address data.

### Claim 6 (depends on 1)

The method of claim 1, wherein determining the address from the further subset of addresses in the second address space comprises:
communicating a request to identify the address from the further subset, to the computing system; and
receiving a response comprising address data for the address in the further subset from the computing system.

### Claim 7 (depends on 1)

The method of claim 1, further comprising removing the determined address from the further subset of addresses of the second address space.

### Claim 8 (depends on 1)

The method of claim 1, wherein replenishing the further subset comprises:
determining the availability of an address in the second address space on the basis of a criterion; and
including the address in the further subset on the basis of the determination of the availability.

### Claim 9 (depends on 8)

The method of claim 8, wherein the criterion comprises a criterion of usage of the address in the further subset by the computing system.

### Claim 10 (depends on 1)

The method of claim 1, wherein the address of the data packet is a destination address for a direct memory access (DMA) request.

### Claim 11 (depends on 1)

The method of claim 1, wherein the address of the data packet is a destination address for a remote direct memory access (RDMA) request.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
accessing one or more further address translation tables, each address translation table comprising entries for each address in the set of addresses of the first address space; and
updating the entries of the one or more further address translation tables associated with the address of the data packet to identify the address of the data packet with the determined address.

### Claim 13 (depends on 1)

The method of claim 1, wherein the address translation table is stored on the computing system.

### Claim 14 (depends on 1)

The method of claim 1, wherein the address translation table is stored on a device performing a direct memory access or a remote direct memory access request to the computing system.

### Claim 15

A computing system arranged to:
identify an address in a set of addresses of a first address space of a memory of the computing system from a data packet comprising data to be written to the memory of the computing system and address data comprising the address;
identify a subset of the set of addresses of the first address space with a subset of addresses of a second address space associated with the memory of the computing system;
determine an address from a further subset of addresses in the second address space;
determine a number of addresses of the second address space in the further subset;
replenish the further subset when a number of addresses falls below a threshold number;
write the data to a region of the memory associated with the determined address; and
communicate a message to the computing system to update an address translation table on the computing system on the basis of the determined address.

### Claim 16 (depends on 15)

The computing system of claim 15, wherein, to identify the subset of addresses of the first address space with the subset of addresses in the second address space, the apparatus is arranged to:
access the address translation table; and
identify the subset of addresses of the first address space on the basis of the address translation table.

### Claim 17 (depends on 15)

The computing system of claim 15, wherein the second address space is a physical address space of the memory of the computing system, and wherein the memory of the computing system is a physical memory.

### Claim 18 (depends on 15)

The computing system of claim 15, wherein the first address space is a virtual address space of the computing system.

### Claim 19 (depends on 15)

The computing system of claim 15, wherein, to determine the address from the further subset of addresses in the second address space, the apparatus is arranged to:
store address data for one or more addresses in the further subset; and
determine the address in the further subset from the stored address data.

### Claim 20 (depends on 15)

The computing system of claim 15, wherein, to determine the address from the further subset of addresses in the second address space, the apparatus is arranged to:
communicate a query comprising a request to identify the address from the further subset, to the computing system; and
receive a response comprising address data for the address in the further subset from the computing system.

### Claim 21 (depends on 15)

The computing system of claim 15, wherein the apparatus is arranged to communicate a message to the computing system comprising a request to remove the determined address from the further subset of addresses of the second address space.

### Claim 22 (depends on 16)

The computing system of claim 16, wherein the apparatus is further arranged to store address data for the updated further subset.

### Claim 23 (depends on 15)

The computing system of claim 15, wherein the address of the data packet is a destination address for a direct memory access (DMA) request to the memory of the computing system.

### Claim 24 (depends on 15)

The computing system of claim 15, wherein the address of the data packet is a destination address for a remote direct memory access (RDMA) request to the memory of the computing system.

### Claim 25 (depends on 15)

The computing system of claim 15, wherein the apparatus is arranged to:
access one or more further address translation tables, each address translation table comprising entries for each address in the set; and
update the entries of the one or more further address translation tables associated with the address of the data packet to identify the address of the data packet with the determined address.

### Claim 26 (depends on 15)

The computing system of claim 15, wherein the address translation table is stored on the computing system.

### Claim 27 (depends on 15)

The computing system of claim 15, wherein the address translation table is stored on a device performing a direct memory access or remote direct memory access request to the computing system.

### Claim 28

A computing system arranged to:
identify an addresses in a set of addresses of a first address space of a memory of the computing system from a data packet comprising data to be written to the memory of the computing system and address data comprising the address;
identify a subset of the set of addresses of the first address space with a subset of addresses of a second address space associated with the memory of the computing system;
determine an address from a further subset of addresses in the second address space, including requesting the address and, in response, receiving address data for the address;
write the data to a region of the memory associated with the determined address; and
communicate a message to the computing system to update an address translation table on the computing system on the basis of the determined address.

### Claim 29 (depends on 28)

The computer system of claim 28, further arranged to determine a number of addresses of the second address space in the further subset; and update the further subset when the number of addresses falls below a threshold number.
