# US 2019/0171580 A1 · Virtual memory system

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

- Number: US 2019/0171580 A1
- Document ID: US20190171580A1
- Status: Published application
- Kind: A1
- Application number: 15/833,874
- Filed: 2017-12-06
- Published: 2019-06-06
- Earliest claimed: 2017-12-06
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Shekar Babu Suryanarayana; Sumanth Vidyadhara; Parmeshwr Prasad
- Web page: https://patentgrep.com/patent/US20190171580A1

## CPC

- G06F 12/1036: for multiple virtual address spaces, e.g. segmentation (G06F12/1045 takes precedence)
- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- 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 2212/202: Non-volatile memory
- G06F 2212/222: Non-volatile memory
- G06F 2212/65: Details of virtual memory and virtual address translation
- G06F 2212/651: Multi-level translation tables
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A virtual memory system includes a virtual memory engine coupled to a plurality of physical memory devices and a virtual memory database. During an initialization process, virtual memory engine uses a first unique global identifier to create virtual memory in the virtual memory database by mapping a continuous virtual memory address range to non-continuous physical memory device address ranges that are provided across the plurality of physical memory devices. During the initialization process, or subsequently during runtime, the virtual memory engine uses a second global unique identifier to define a virtual memory device namespace in the virtual memory that includes a first continuous subset of the continuous virtual member address range. During runtime, the virtual memory engine then provides read and write block mode access to the plurality of physical memory devices via the virtual memory device namespace defined in the virtual memory database.

## Claims

### Claim 1

A virtual memory system, comprising:
a plurality of physical memory devices;
a virtual memory database; and
a virtual memory engine that is coupled to each of the plurality of physical memory device and the virtual memory database, wherein the virtual memory engine is configured to:
create, during an initialization process and in the virtual memory database using a first global unique identifier, virtual memory by mapping a continuous virtual memory address range to non-continuous physical memory device address ranges that are provided across the plurality of physical memory devices;
define, in the virtual memory database using a second global unique identifier, a virtual memory device namespace in the virtual memory that includes a first continuous subset of the continuous virtual member address range; and
provide, during runtime, read and write block mode access to the plurality of physical memory devices via the virtual memory device namespace defined in the virtual memory database.

### Claim 2 (depends on 1)

The virtual memory system of claim 1, wherein the plurality of virtual memory devices are Non-Volatile Virtual Memory Modules (NVDIMMs) and the virtual memory is a virtual NVDIMM.

### Claim 3 (depends on 2)

The virtual memory system of claim 2, wherein the virtual memory database includes an NVDIMM Firmware Interface Table (NFIT).

### Claim 4 (depends on 1)

The virtual memory system of claim 1, wherein the virtual memory engine is configured to:
determine that a first physical memory device of the plurality of physical memory devices has been replaced with a second physical memory device; and
replace, in the virtual memory database and in response to determining that the first physical memory device has been replaced with the second physical memory device, a first physical memory device address range that is provided in the first physical memory device, included in the non-continuous physical memory device address ranges, and mapped to the continuous virtual memory address range, with a second physical memory device address range provided in the second physical memory device.

### Claim 5 (depends on 4)

The virtual memory system of claim 4, wherein the virtual memory engine is configured to:
provide, during runtime and as a result of replacing the first physical memory address range with second physical memory address range, read and write block mode access to the second physical memory device via the virtual memory namespace.

### Claim 6 (depends on 1)

The virtual memory system of claim 1, wherein the virtual memory engine includes:
a Basic Input Ouput System (BIOS) that is configured to define the virtual memory namespace during the initialization process; and
a runtime service that is configured to define the virtual memory namespace subsequent to the initialization process and during runtime.

### Claim 7 (depends on 1)

The virtual memory system of claim 1, wherein the virtual memory engine is configured to:
increase the size of the virtual memory device namespace in the virtual memory by redefining, in the virtual memory database using the second global unique identifier, the virtual memory device namespace to include the first continuous subset of the continuous virtual memory address range and a second continuous subset of the continuous virtual memory address range that is continuous with the first continuous subset.

### Claim 8

An information handling system (IHS), comprising:
a processing system; and
a memory system that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a virtual memory engine that is configured to:
create, during an initialization process and in a virtual memory database using a first global unique identifier, virtual memory by mapping a continuous virtual memory address range to non-continuous physical memory device address ranges that are provided across a plurality of physical memory devices;
define, in the virtual memory database using a second global unique identifier, a virtual memory device namespace in the virtual memory that includes a first continuous subset of the continuous virtual member address range; and
provide, during runtime, read and write block mode access to the plurality of physical memory devices via the virtual memory device namespace defined in the virtual memory database.

### Claim 9 (depends on 8)

The IHS of claim 8, wherein the plurality of virtual memory devices are Non-Volatile Virtual Memory Modules (NVDIMMs) and the virtual memory is a virtual NVDIMM.

### Claim 10 (depends on 9)

The IHS of claim 9, wherein the virtual memory database includes an NVDIMM Firmware Interface Table (NFIT).

### Claim 11 (depends on 8)

The IHS of claim 8, wherein the virtual memory engine is configured to:
determine that a first physical memory device of the plurality of physical memory devices has been replaced with a second physical memory device;
replace, in the virtual memory database and in response to determining that the first physical memory device has been replaced with the second physical memory device, a first physical memory device address range that is provided in the first physical memory device, included in the non-continuous physical memory device address ranges, and mapped to the continuous virtual memory address range, with a second physical memory device address range provided in the second physical memory device; and
provide, during runtime and as a result of replacing the first physical memory address range with second physical memory address range, read and write block mode access to the second physical memory device via the virtual memory namespace.

### Claim 12 (depends on 8)

The IHS of claim 8, wherein the virtual memory engine includes:
a Basic Input Ouput System (BIOS) that is configured to define the virtual memory namespace during the initialization process; and
a runtime service that is configured to define the virtual memory namespace subsequent to the initialization process and during runtime.

### Claim 13 (depends on 8)

The IHS of claim 8, wherein the virtual memory engine is configured to:
increase the size of the virtual memory device namespace in the virtual memory by redefining, in the virtual memory database using the second global unique identifier, the virtual memory device namespace to include the first continuous subset of the continuous virtual memory address range and a second continuous subset of the continuous virtual memory address range that is continuous with the first continuous subset.

### Claim 14

A method for providing virtual memory, comprising:
creating, by a computing device during an initialization process and in a virtual memory database using a first global unique identifier, virtual memory by mapping a continuous virtual memory address range to non-continuous physical memory device address ranges that are provided across a plurality of physical memory devices;
defining, by the computing device in the virtual memory database using a second global unique identifier, a virtual memory device namespace in the virtual memory that includes a first continuous subset of the continuous virtual member address range; and
providing, by the computing device during runtime, read and write block mode access to the plurality of physical memory devices via the virtual memory device namespace defined in the virtual memory database

### Claim 15 (depends on 14)

The method of claim 14, wherein the plurality of virtual memory devices are Non-Volatile Virtual Memory Modules (NVDIMMs) and the virtual memory is a virtual NVDIMM.

### Claim 16 (depends on 15)

The method of claim 15, wherein the virtual memory database includes an NVDIMM Firmware Interface Table (NFIT)

### Claim 17 (depends on 14)

The method of claim 14, further comprising:
determining, by the computing device, that a first physical memory device of the plurality of physical memory devices has been replaced with a second physical memory device; and
replacing, by the computing device in the virtual memory database and in response to determining that the first physical memory device has been replaced with the second physical memory device, a first physical memory device address range that is provided in the first physical memory device, included in the non-continuous physical memory device address ranges, and mapped to the continuous virtual memory address range, with a second physical memory device address range provided in the second physical memory device.

### Claim 18 (depends on 17)

The method of claim 17, further comprising:
providing, by the computing device during runtime and as a result of replacing the first physical memory address range with second physical memory address range, read and write block mode access to the second physical memory device via the virtual memory namespace.

### Claim 19 (depends on 14)

The method of claim 14, wherein the computing device includes:
a Basic Input Ouput System (BIOS) that is configured to define the virtual memory namespace during the initialization process; and
a runtime service that is configured to define the virtual memory namespace subsequent to the initialization process and during runtime.

### Claim 20 (depends on 14)

The method of claim 14, further comprising:
increasing, by the computing device, the size of the virtual memory device namespace in the virtual memory by redefining, in the virtual memory database using the second global unique identifier, the virtual memory device namespace to include the first continuous subset of the continuous virtual memory address range and a second continuous subset of the continuous virtual memory address range that is continuous with the first continuous subset
