# US 11,907,589 B2 · Unified host memory for coprocessors

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

- Number: US 11,907,589 B2
- Document ID: US11907589B2
- Status: Granted
- Kind: B2
- Application number: 16/504,362
- Filed: 2019-07-08
- Published: 2021-01-14
- Granted: 2024-02-20
- Earliest claimed: 2019-07-08
- Assignees: VMware, Inc.
- Applicants: Bitfusion.io, Inc.
- Inventors: Aidan Cully; Mazhar Memon
- Web page: https://patentgrep.com/patent/US11907589B2

## CPC

- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/064: {Management of blocks}
- G06F 9/3877: {using a secondary processor, e.g. coprocessor (peripheral processor G06F13/12)}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 12/023: {Free address space management}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

At least one application of a client executes via system software on a hardware computing system that includes at least one CPU and at least one coprocessor. A virtualization layer establishes unified memory address space between the client and the hardware computing system, which also includes memory associated with the at least one coprocessor. The virtualization layer then synchronizes memory associated with the client and memory associated the at least one coprocessor. The virtualization layer may be installed and run in a non-privileged, user space, without modification of the application or of the system software running on the hardware computing system.

## Claims

### Claim 1

A data processing method comprising:
executing instructions of at least one application of a client via system software on a hardware computing system that includes at least one CPU and at least one coprocessor, said at least one application including instructions to be executed on the at least one coprocessor; and
using a virtualization layer that is logically between the at least one application and the system software in a non-privileged, user space and runs on the hardware computing system,
establishing a unified memory address space between the client and the hardware computing system for memory associated with the client and memory associated with the at least one coprocessor, and
synchronizing a first memory and a second memory that is different from the first memory, wherein the first memory is associated with the client and the second memory is associated with the at least one coprocessor, and the first memory and the second memory reside in the unified memory address space, wherein
the virtualization layer is installed without modification of the at least one application or of the system software running on the hardware computing system, and
the steps of establishing the unified memory address space and synchronizing the first memory and the second memory are transparent to the at least one application.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
creating a memory map with a destination address specification on the client and the hardware computing system;
determining agreement between the client acid the hardware computing system with respect to a common memory address range; and
detecting memory changes on the client and hardware computing platform.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
via the virtualization layer:
identifying free portions of an address space on the client and on the hardware computing system;
communicating an address space mapping from the hardware computing system to the client;
scanning a process map for the client and the hardware computing system to find a free memory region available for allocation and reserving said free memory region for unified memory use; and
communicating said free memory region to the hardware computing system and reserving the free memory region for unified memory use;
integrating a memory allocator on the client and, via the memory allocator, defining a unified memory arena using the free memory region; and
via the virtualization layer, allocating and freeing buffers from the unified memory arena, and registering/deregistering said allocations with the hardware computing system.

### Claim 4 (depends on 3)

The method of claim 3, further comprising identifying the free portions by reading at least one memory map.

### Claim 5

A data processing system comprising:
at least one central processing unit (CPU);
at least one coprocessor;
at least one application of a client running via system software on a hardware computing system that includes the at least one CPU and the at least one coprocessor;
a virtualization layer installed to run on the hardware computing system and comprising computer-executable code which, when executed on the at least one CPU, is provided:
for establishing a unified memory address space between the client and the hardware computing system for memory associated with the client and memory associated with the at least one coprocessor; and
for synchronizing the memory associated with the client and the memory associated with the at least one coprocessor,
wherein the virtualization layer runs logically between the at least one application and the system software in a non-privileged, user space, without modification of the at least one application or of the system software running on the hardware computing system, whereby the virtualization layer establishes the unified memory address space and synchronizes the memory transparently to the at least one application.

### Claim 6 (depends on 5)

The system of claim 5, further comprising:
a memory map with a destination address specification on the client and hardware computing system,
wherein the virtualization layer is further provided:
for determining agreement between the client and the hardware computing system with respect to common memory address range; and
for detecting memory changes on the client and hardware computing platform.

### Claim 7 (depends on 5)

The system of claim 5, further comprising
a memory allocator on the client; and
buffers,
wherein the virtualization layer is further provided:
for identifying free portions of an address space on the client and on the hardware computing system;
for communicating an address space mapping from the hardware computing system to the client;
for scanning a process map for the client and the hardware computing system to find a free memory region available for allocation and reserving said memory region for unified memory use; and
for communicating said free memory region to the hardware computing system and reserving the region for unified memory use,
said memory allocator being provided for defining a unified memory arena using the free memory region, and
said virtualization layer being further provided for allocating and freeing buffers from the unified memory arena, and registering/deregistering said allocations with the hardware computing system.

### Claim 8 (depends on 7)

The system of claim 7, further comprising at least one memory map identifying the free portions.

### Claim 9

A data processing method comprising:
executing instructions of at least one application of a client via system software on a hardware computing system that includes at least one CPU and at least one coprocessor, said at least one application including instructions to be executed on the at least one coprocessor; and
using a virtualization layer that runs on the hardware computing system,
creating a memory map with a destination address specification on the client and the hardware computing system,
determining agreement between the client and the hardware computing system with respect to a common memory address range,
detecting changes to a first memory that is associated with the client and is mapped to the common address range, and a second memory different from the first memory, that is associated with the at least one coprocessor and is mapped to the common address range, and
synchronizing the first memory and the second memory.

### Claim 10 (depends on 9)

The method of claim 9, further comprising installing the virtualization layer logically between the at least one application and the system software in a non-privileged, user space, without modification of the at least one application or of the system software running on the hardware computing system.
