# US 10,482,007 B2 · Memory allocation on non-volatile storage

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

- Number: US 10,482,007 B2
- Document ID: US10482007B2
- Status: Granted
- Kind: B2
- Application number: 15/370,566
- Filed: 2016-12-06
- Published: 2018-06-07
- Granted: 2019-11-19
- Earliest claimed: 2016-12-06
- Assignees: Noblis, Inc.
- Applicants: Noblis, Inc.
- Inventors: Tyler W. Barrus
- Web page: https://patentgrep.com/patent/US10482007B2

## CPC

- G06F 12/0223: {User address space allocation, e.g. contiguous or non contiguous base addressing}
- G06F 9/44573: {Execute-in-place [XIP]}
- G06F 12/023: {Free address space management}
- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/1048: Scalability
- G06F 2212/202: Non-volatile memory
- G06F 2212/7202: Allocation control and policies
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques for allocating memory on non-volatile storage mediums, rather than on RAM storage mediums, are provided. In some embodiments, first functions in program code for allocating memory on RAM storage are replaced with corresponding second functions for allocating memory on non-volatile storage. Library files corresponding to the second functions may be stored in programming language libraries, such that the second function may be defined in order to allocate memory on non-volatile storage. In some embodiments, a library file for allocating memory on RAM storage may be modified such that it instead causes allocation of memory on non-volatile storage. Allocating memory, storing data in memory, or retrieving data in memory may, in some embodiments, include providing instructions for a processor to communicate via a bus associated with non-volatile storage rather than a bus associated with RAM storage.

## Claims

### Claim 1

A computer system comprising:
one or more processors;
a RAM storage medium; and
a non-volatile storage medium storing first instructions configured to be executed by the one or more processors to cause the system to:
receive program code including a first memory allocation function for causing the program code to allocate, during execution of the program code, memory in the RAM storage medium;
determine, based on an amount of memory to be allocated for executing the program code, whether the first memory allocation function in the program code should be replaced with a second memory allocation function for causing the program code to allocate, during execution of the program code, memory in the non-volatile storage medium;
in response to determining to replace the first memory allocation function in the program code, modify the program code to replace the first memory allocation function with the second memory allocation function for causing the program code to allocate, during execution of the program code, memory in the non-volatile storage medium; and
execute the modified program code including the second memory allocation function to allocate memory in the non-volatile storage medium.

### Claim 2 (depends on 1)

The system of claim 1, wherein:
the RAM storage medium communicates with the one or more processors via a first bus, and the first memory allocation function causes the system to allocate memory over the first bus; and
the non-volatile storage medium communicates with the one or more processors via a second bus, and the second memory allocation function causes the system to allocate memory over the second bus.

### Claim 3 (depends on 1)

The system of claim 1, wherein the non-volatile storage medium is a solid state drive.

### Claim 4 (depends on 1)

The system of claim 1, wherein a first write speed associated with the RAM storage medium is faster than a second write speed associated with the non-volatile storage medium.

### Claim 5 (depends on 1)

The system of claim 1, wherein:
the first memory allocation function is associated with a first library file including second instructions for allocating memory on the RAM storage medium, the first library file being stored in a library of a programming language; and
the first instructions are configured to cause the system to store a second library file in the library, wherein the second library file is associated with the second memory allocation function and includes third instructions for allocating memory on the non-volatile storage medium.

### Claim 6 (depends on 1)

The system of claim 1, wherein the determining includes determining that the first memory allocation function in the program code should be replaced if the amount of memory to be allocated is not available in the RAM storage medium and is available in the non-volatile storage medium.

### Claim 7 (depends on 1)

The system of claim 1, wherein determining whether the first memory allocation function in the program code should be replaced with the second memory allocation function includes selecting the second memory allocation function, from among a plurality of other memory allocation functions, when the non-volatile storage medium associated with the second memory allocation function has a faster read/write time than storage media associated with the plurality of other memory allocation functions.

### Claim 8

A method, performed at a system comprising one or more processors, a RAM storage medium, and a non-volatile storage medium, the method comprising:
receiving program code including a first memory allocation function for causing the program code to allocate, during execution of the program code, memory in the RAM storage medium;
determining, based on an amount of memory to be allocated for executing the program code, whether the first memory allocation function in the program code should be replaced with a second memory allocation function for causing the program code to allocate, during execution of the program code, memory in the non-volatile storage medium;
in response to determining to replace the first memory allocation function in the program code, modifying the program code to replace the first memory allocation function with the second memory allocation function for causing the program code to allocate, during execution of the program code, memory in the non-volatile storage medium; and
executing the modified program code including the second memory allocation function to allocate memory in the non-volatile storage medium.

### Claim 9 (depends on 8)

The method of claim 8, wherein:
the RAM storage medium communicates with the one or more processors via a first bus, and the first memory allocation function causes the system to allocate memory over the first bus; and
the non-volatile storage medium communicates with the one or more processors via a second bus, and the second memory allocation function causes the system to allocate memory over the second bus.

### Claim 10 (depends on 8)

The method of claim 8, wherein the RAM storage medium is a volatile storage medium.

### Claim 11 (depends on 8)

The method of claim 8, wherein the non-volatile storage medium is a solid state drive.

### Claim 12 (depends on 8)

The method of claim 8, wherein a first write speed associated with the RAM storage medium is faster than a second write speed associated with the non-volatile storage medium.

### Claim 13 (depends on 8)

The method of claim 8, comprising:
storing a first library file associated with the first memory allocation function in a library of a programming language, wherein the first library file comprises instructions for allocating memory on the RAM storage medium; and
storing a second library file associated with the second memory allocation function in the library, wherein the second library file comprises instructions for allocating memory on the non-volatile storage medium.

### Claim 14 (depends on 8)

The method of claim 8, wherein determining whether the first memory allocation function in the program code should be replaced comprises determining that the first memory allocation function in the program code should be replaced if the amount of memory to be allocated is not available in the RAM storage medium and is available in the non-volatile storage medium.

### Claim 15 (depends on 8)

The method of claim 8, wherein determining whether the first memory allocation function in the program code should be replaced with the second memory allocation function comprises selecting the second memory allocation function, from among a plurality of other memory allocation functions, when the non-volatile storage medium associated with the second memory allocation function has a faster read/write time than storage media associated with the plurality of other memory allocation functions.

### Claim 16

A non-transitory computer-readable storage medium storing instructions configured to be executed by one or more processors of a device with a RAM storage medium and a non-volatile storage medium, the instructions being configured to cause the system to:
receive program code including a first memory allocation function for causing the program code to allocate, during execution of the program code, memory in the RAM storage medium;
determine, based on an amount of memory to be allocated for executing the program code, whether the first memory allocation function in the program code should be replaced with a second memory allocation function for causing the program code to allocate, during execution of the program code, memory in the non-volatile storage medium;
in response to determining to replace the first memory allocation function in the program code, modify the program code to replace the first memory allocation function with the second memory allocation function for causing the program code to allocate, during execution of the program code, memory in the non-volatile storage medium; and
execute the modified program code including the second memory allocation function to allocate memory in the non-volatile storage medium.
