# US 10,481,811 B2 · Asynchronous copying of data within memory

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

- Number: US 10,481,811 B2
- Document ID: US10481811B2
- Status: Granted
- Kind: B2
- Application number: 16/242,669
- Filed: 2019-01-08
- Published: 2019-05-30
- Granted: 2019-11-19
- Earliest claimed: 2015-10-16
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Rama Krishna Govindaraju; Liqun Cheng; Parthasarathy Ranganathan; Michael R. Marty; Andrew Gallatin
- Web page: https://patentgrep.com/patent/US10481811B2

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0683: {Plurality of storage devices}
- G06F 12/1081: for peripheral access to main memory, e.g. direct memory access [DMA]
- G06F 12/0888: using selective caching, e.g. bypass
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An example method includes during execution of a software application by a processor, receiving, by a copy processor separate from the processor, a request for an asynchronous data copy operation to copy data within a memory accessible by the copy processor, wherein the request is received from a copy manager accessible by the software application in a user space of an operating system managing execution of the software application; in response to the request, initiating, by the copy processor, the asynchronous data copy operation; continuing execution of the software application by the processor; determining, by the copy processor, that the asynchronous data copy operation has completed; and in response to determining that the asynchronous copy operation has completed, selectively notifying, by the copy processor, the software application that the asynchronous copy operation has completed.

## Claims

### Claim 1

A computer-implemented method executed by one or more processors, the method comprising:
during execution of a software application by a processor, receiving, by a copy processor separate from the processor, a request for an asynchronous data copy operation to copy data, wherein the request includes an indication to the copy processor to pass an interrupt to the copy manager upon completion of the asynchronous data copy operation instead of set a completion flag upon completion of the asynchronous data copy operation;
in response to the request, initiating, by the copy processor, the asynchronous data copy operation;
continuing execution of the software application by the processor;
determining, by the copy processor, that the asynchronous data copy operation has completed; and
in response to determining that the asynchronous data copy operation has completed, selectively notifying based on the indication in the request to pass the interrupt to the copy manager upon completion of the asynchronous data copy operation instead of set the completion flag upon completion of the asynchronous data copy operation, by the copy processor, the software application that the asynchronous data copy operation has completed through the interrupt instead of the completion flag.

### Claim 2 (depends on 1)

The method of claim 1, wherein the request received from the copy manager is generated without the processor performing a mode switch to an operating system.

### Claim 3 (depends on 1)

The method of claim 1, wherein the request includes virtual address parameters identifying a source location containing data to be copied and a destination location to which the data is to be copied.

### Claim 4 (depends on 1)

The method of claim 1, wherein the request received from the copy manager includes a cache flag indicating whether the copied data should be stored in a cache associated with the processor.

### Claim 5 (depends on 1)

The method of claim 1, wherein the asynchronous data copy operation indicates a source address within the memory from which to copy data and a destination address within the memory to receive the data, and the method further comprises:
before initiating the asynchronous data copy operation, protecting locations in the memory corresponding to the source and destination addresses.

### Claim 6 (depends on 5)

The method of claim 5, wherein protecting the location is performed without pinning virtual memory pages associated with the locations.

### Claim 7 (depends on 6)

The method of claim 6, further comprising in response to determining that the asynchronous data copy operation has completed, unprotecting the locations in the memory.

### Claim 8 (depends on 1)

The method of claim 1, wherein the processor and the copy processor are co-located within a system-on-a-chip device.

### Claim 9 (depends on 1)

The method of claim 1, wherein the processor and the copy processor are located in separate devices connected by a data bus.

### Claim 10 (depends on 1)

The method of claim 1, wherein the processor includes a central processing unit that includes one or more processor cores and the copy processor is a hardware component that is separate from the central processing unit and separate from the one or more processor cores.

### Claim 11 (depends on 1)

The method of claim 1, wherein the copy manager is separate from the copy processor and the processor, and wherein selectively notifying, by the copy processor, the software application that the asynchronous copy operation has completed comprises the copy manager notifying the software application that the asynchronous copy operation has completed in response to a notification received by the copy manager from the copy processor that indicates the asynchronous copy operation that was requested has completed.

### Claim 12 (depends on 1)

The method of claim 1, comprising:
receiving a second request for a second asynchronous data copy operation;
determining that the asynchronous data copy operation is in progress by the copy processor; and
in response to determining that the asynchronous data copy operation is in progress by the copy processor, perform a synchronous copy operation using the processor instead of performing the second asynchronous data copy operation using the copy processor.

### Claim 13 (depends on 1)

The method of claim 1, comprising:
receiving, by the copy processor, a second request for a second asynchronous data copy operation that includes a second indication to the copy processor to set a completion flag upon completion of the second asynchronous data copy operation instead of pass an interrupt upon completion of the second asynchronous data copy operation.

### Claim 14

A non-transitory, computer-readable medium storing instructions operable when executed to cause at least one processor to perform operations comprising:
during execution of a software application by a processor, receiving, by a copy processor separate from the processor, a request for an asynchronous data copy operation to copy data, wherein the request includes an indication to the copy processor to pass an interrupt to the copy manager upon completion of the asynchronous data copy operation instead of set a completion flag upon completion of the asynchronous data copy operation;
in response to the request, initiating, by the copy processor, the asynchronous data copy operation;
continuing execution of the software application by the processor;
determining, by the copy processor, that the asynchronous data copy operation has completed; and
in response to determining that the asynchronous data copy operation has completed, selectively notifying based on the indication in the request to pass the interrupt to the copy manager upon completion of the asynchronous data copy operation instead of set the completion flag upon completion of the asynchronous data copy operation, by the copy processor, the software application that the asynchronous data copy operation has completed through the interrupt instead of the completion flag.

### Claim 15 (depends on 14)

The medium of claim 14, wherein the request received from the copy manager is generated without the processor performing a mode switch to an operating system.

### Claim 16 (depends on 14)

The medium of claim 14, wherein the request includes virtual address parameters identifying a source location containing data to be copied and a destination location to which the data is to be copied.

### Claim 17 (depends on 14)

The medium of claim 14, wherein the request received from the copy manager includes a cache flag indicating whether the copied data should be stored in a cache associated with the processor.

### Claim 18 (depends on 14)

The medium of claim 14, wherein the asynchronous data copy operation indicates a source address within the memory from which to copy data and a destination address within the memory to receive the data, and the operations further comprise:
before initiating the asynchronous data copy operation, protecting locations in the memory corresponding to the source and destination addresses.

### Claim 19 (depends on 18)

The medium of claim 18, wherein protecting the location is performed without pinning virtual memory pages associated with the locations.

### Claim 20

A system comprising:
memory for storing data;
a processor operable to perform first operations comprising:
executing a software application; and
a copy processor separate from the processor and communicably coupled to the memory and the processor, operable to perform second operations comprising:
during execution of the software application by the processor, receiving a request for an asynchronous data copy operation to copy data within the memory accessible by the copy processor, wherein the request is received from a copy manager accessible by the software application in a user space of an operating system managing execution of the software application and includes an indication to the copy processor to pass an interrupt to the copy manager upon completion of the asynchronous data copy operation instead of set a completion flag upon completion of the asynchronous data copy operation;
in response to receiving the request, initiating the asynchronous data copy operation;
determining that the asynchronous data copy operation has completed; and
in response to determining that the asynchronous data copy operation has completed, selectively notifying, based on the indication in the request to pass an interrupt to the copy manager upon completion of the asynchronous data copy operation instead of set the completion flag upon completion of the asynchronous data copy operation, the software application that the asynchronous data copy operation has completed through the interrupt instead of the completion flag.
