# US 11,307,796 B2 · Mapping memory allocation requests using various memory attributes

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

- Number: US 11,307,796 B2
- Document ID: US11307796B2
- Status: Granted
- Kind: B2
- Application number: 16/144,406
- Filed: 2018-09-27
- Published: 2020-04-02
- Granted: 2022-04-19
- Earliest claimed: 2018-09-27
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Anshuman Khandual; Saravanan Sethuraman; Venkata K. Tavva; Anand Haridass
- Web page: https://patentgrep.com/patent/US11307796B2

## CPC

- G06F 3/0656: {Data buffering arrangements}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0613: {in relation to throughput}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 11/073: {in a memory management context, e.g. virtual memory or cache management (memory management G06F12/00; testing of static memory units G11C29/00)}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method stores data that handles page faults in an appropriate memory device based on a standing memory policy. One or more processors receive user requested memory buffer attributes that describe memory buffer attributes needed for various processes. The processor(s) store the user requested memory buffer attributes in an operating system virtual memory representation that describes various types of memories used by the system, create a standing memory policy based on the user requested memory buffer attributes, and store data on an appropriate memory device based on the standing memory policy. The processor(s) receive a page fault, which is based on the data being called by a process but not being currently mapped by a memory management unit (MMU) into a virtual address space of the process. The processor(s) then retrieve and return the data stored on the appropriate memory device in order to address the page fault.

## Claims

### Claim 1

A method comprising:
receiving, by one or more processors, requested memory buffer attributes from a requesting application, wherein the requested memory buffer attributes describe memory buffer attributes needed in a memory buffer for various processes in the requesting application, wherein the requested memory buffer attributes describe bandwidth, density, probable rate of memory failure, and logic within the memory buffer for performing logic processing on the device without use of a central processing unit, and wherein the density is a density of transistors on a memory chip that supports the memory buffer;
storing, by one or more processors, the requested memory buffer attributes in a virtual memory representation, wherein the virtual memory representation describes various types of memories used by a system, wherein the virtual memory is virtual memory that is used to store attributes of the memory buffer that are required by the requesting application, and wherein the virtual memory representation includes virtual memory addresses of memory devices that have the requested memory buffer attributes;
creating a standing memory policy based on the requested memory buffer attributes, wherein the standing memory policy identifies what type of memory is to be used with the requesting application, wherein the standing memory policy defines the bandwidth, density, probable rate of memory failure, and logic for performing logic processing on the device without use of the central processing unit, and wherein the standing memory policy identifies the memory chip that supports the memory buffer;
storing, by one or more processors, data on an appropriate memory device used by the system based on the standing memory policy, wherein the appropriate memory device is the memory chip that supports the memory buffer that is used with the application;
receiving, by one or more processors, a page fault, wherein the page fault is based on the data stored on the appropriate memory device being called by the requesting application not being currently mapped by a memory management unit (MMU) into a virtual address space of the requesting application; and
in response to receiving the page fault, retrieving and returning, by one or more processors, the data stored on the appropriate memory device in order to address the page fault.

### Claim 2 (depends on 1)

The method of claim 1, wherein the requested memory buffer attributes describe a particular task type being performed by the requesting application, wherein the particular task type is a task of storing photos.

### Claim 3 (depends on 1)

The method of claim 1, wherein the requested memory buffer attributes further describe a memory buffer architecture type.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
scanning, by one or more processors, an advanced configuration and power interface (ACPI) table in order to identify memory buffer attributes associated with each of the various types of memories used by the system, wherein the ACPI table includes a listing and description of various types of memory that are found in the system that is running the requesting application, and wherein the ACPI table is scanned in order to match the requested memory buffer attributes to the appropriate memory device.

### Claim 5 (depends on 1)

The method of claim 1, wherein the requested memory buffer attributes are received from the requesting application, and wherein the method further comprises:
creating, by one or more processors, an attribute-based buddy table for the various types of memories used by the system, wherein the attribute-based buddy table pairs a DDR5 memory and a PCM memory for use by the requesting application; and
storing, by one or more processors, data for the requesting application on both the DDR5 memory and the PCM memory.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
creating, by one or more processors, a weighted graph of the various types of memories used by the system, wherein the weighted graph depicts weighted attributes of the various types of memories used by the system, and wherein at least two of the various types of memories have different weights of attributes that describes a level of importance of each type of memory when executing a process; and
selecting, by one or more processors, a highest weighted memory from the weighted graph as the appropriate memory device.

### Claim 7 (depends on 1)

The method of claim 1, wherein the process calling the data is a boot process, and wherein the method further comprises:
creating, by one or more processors, a boot weighted graph of the various types of memories used by the system during boot time, wherein the boot weighted graph depicts weighted attributes of the various types of memories used by the system during boot time, and wherein at least two of the various types of memories have different weights that describes a level of importance of each type of memory when booting up the system; and
selecting, by one or more processors, a highest weighted memory from the boot weighted graph as the appropriate memory device.

### Claim 8 (depends on 1)

The method of claim 1, wherein the process calling the data is an application process, and wherein the method further comprises:
creating, by one or more processors, a runtime weighted graph of the various types of memories used by the system during runtime of the application process, wherein the runtime weighted graph depicts weighted attributes of the various types of memories used by the system during runtime, and wherein at least two of the various types of memories have different weights that describes a level of importance of each type of memory during runtime of the application process; and
selecting, by one or more processors, a highest weighted memory from the runtime weighted graph as the appropriate memory device.

### Claim 9

A computer program product comprising a non-transitory computer readable storage device having program instructions embodied therewith, the program instructions readable and executable by a computer to perform a method comprising:
receiving requested memory buffer attributes that describe memory buffer attributes needed for various processes, wherein the requested memory buffer attributes are received from a kernel of an operating system, wherein the requested memory buffer attributes describe bandwidth, density, probable rate of memory failure, and logic within the memory buffer for performing logic processing on the device without use of a central processing unit;
storing the requested memory buffer attributes in a virtual memory representation, wherein the virtual memory representation describes various types of memories used by a system;
storing data on an appropriate memory device used by the system based on a standing memory policy that identifies a type of memory that is used with a certain type of application, wherein the appropriate memory device is a memory device that is used with the certain type of application;
finding, by the kernel of the operating system, the appropriate memory device, wherein the appropriate memory device has the requested memory buffer attributes;
receiving a page fault, wherein the page fault is based on the data being called by a process but not being currently mapped by a memory management unit (MMU) into a virtual address space of the process; and
in response to receiving the page fault, retrieving and returning the data stored on the appropriate memory device in order to address the page fault.

### Claim 10 (depends on 9)

The computer program product of claim 9, wherein the requested memory buffer attributes describe a particular task type being performed by the requesting application, wherein the particular task type is a task of storing photos, and wherein a request for a memory device from the requesting application is weighted towards memory with high bandwidth and is not weighted towards memory that has on-board compute capability.

### Claim 11 (depends on 9)

The computer program product of claim 9, wherein the user requested memory buffer attributes describe a memory buffer type.

### Claim 12 (depends on 9)

The computer program product of claim 9, wherein the method further comprises:
scanning an advanced configuration and power interface (ACPI) table in order to identify memory buffer attributes associated with each of the various types of memories used by the system;
scanning, by one or more processors, an advanced configuration and power interface (ACPI) table in order to identify memory buffer attributes associated with each of the various types of memories used by the system, wherein the ACPI table includes a listing and description of various types of memory that are found in the system that is running the requesting application, and wherein ACPI table is scanned in order to match the requested memory buffer attributes to the appropriate memory device.

### Claim 13 (depends on 9)

The computer program product of claim 9, wherein the requested memory buffer attributes are received from the requesting application, and wherein the method further comprises:
creating an attribute-based buddy table for the various types of memories used by the system, wherein the attribute-based buddy table pairs a DDR5 memory and a PCM memory for use by the requesting application; and
storing data for the requesting application on both the DDR5 memory and the PCM memory.

### Claim 14 (depends on 9)

The computer program product of claim 9, wherein the method further comprises:
creating a weighted graph of the various types of memories used by the system when executing the process, wherein the weighted graph depicts weighted attributes of the various types of memories used by the system when executing the process; and
selecting a highest weighted memory from the weighted graph as the appropriate memory device.

### Claim 15 (depends on 9)

The computer program product of claim 9, wherein the process calling the data is a boot process, and wherein the method further comprises:
creating a boot weighted graph of the various types of memories used by the system during boot time, wherein the boot weighted graph depicts weighted attributes of the various types of memories used by the system during boot time; and
selecting a highest weighted memory from the boot weighted graph as the appropriate memory device.

### Claim 16 (depends on 9)

The computer program product of claim 9, wherein the process calling the data is an application process, and wherein the method further comprises:
creating a runtime weighted graph of the various types of memories used by the system during runtime of the application process, wherein the runtime weighted graph depicts weighted attributes of the various types of memories used by the system during runtime; and
selecting a highest weighted memory from the runtime weighted graph as the appropriate memory device.

### Claim 17 (depends on 9)

The computer program product of claim 9, wherein the program instructions are provided as a service in a cloud environment.

### Claim 18

A computer system comprising one or more processors, one or more computer readable memories, and one or more computer readable non-transitory storage mediums, and program instructions stored on at least one of the one or more computer readable non-transitory storage mediums for execution by at least one of the one or more processors via at least one of the one or more computer readable memories, the stored program instructions executed to perform a method comprising:
receiving user requested memory buffer attributes that describe memory buffer attributes needed for various processes, wherein the user requested memory buffer attributes are received from a kernel of an operating system, and wherein the user requested memory buffer attributes describe bandwidth, density, probable rate of memory failure, and logic within the memory buffer for performing logic processing on the device without use of a central processing unit;
storing the user requested memory buffer attributes in a virtual memory representation, wherein the virtual memory representation describes various types of memories used by a system;
storing data on an appropriate memory device used by the system based on standing memory policy that identifies a type of memory that is used with a certain type of application, wherein the appropriate memory device is a memory device that is used with the certain type of application;
finding, by the kernel of the operating system, the appropriate memory device, wherein the appropriate memory device has the user requested memory buffer attributes;
receiving a page fault, wherein the page fault is based on the data being called by a process but not being currently mapped by a memory management unit (MMU) into a virtual address space of the process; and
in response to receiving the page fault, retrieving and returning the data stored on the appropriate memory device in order to address the page fault.

### Claim 19 (depends on 18)

The computer system of claim 18, wherein the user requested memory buffer attributes describe a memory buffer type.

### Claim 20 (depends on 18)

The computer system of claim 18, wherein the program instructions are provided as a service in a cloud environment.
