IP Library Granted Patent US 11,340,835
Granted Patent B2
US 11,340,835 · App. 16/940,516 · Granted May 24, 2022

Virtual non-volatile memory system

Inventors: Ching-Lung Chao (Austin, TX); Hung-Tah Wei (Round Rock, TX); Amber Hokama (Austin, TX)
Assignee: Dell Products L.P.
G06F3/0659G06F3/0604G06F3/065G06F3/0664G06F3/0679G06F13/1668
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,340,835
App. No.
16/940,516
Granted
May 24, 2022
Kind
B2
Abstract

A virtual non-volatile memory system includes a BIOS coupled to a non-volatile storage system and a volatile memory system. The BIOS designates a portion of the volatile memory system as a virtual NVDIMM, reserves a portion of the non-volatile storage system for storing virtual NVDIMM data, reports the virtual NVDIMM to an operating system using an ACPI NFIT, and emulates an NVDIMM controller. When a virtual NVDIMM storage event occurs, the BIOS copies data from the portion of the volatile memory system designated as the virtual NVDIMM to the portion of the non-volatile storage system reserved for storing virtual NVDIMM data. When the BIOS subsequently determines that a virtual NVDIMM recovery event has occurred, it copies the data stored in the portion of the non-volatile storage system reserved for storing virtual NVDIMM data to the portion of the volatile memory system designated as the virtual NVDIMM.

Claims (67)

1. A virtual non-volatile memory system, comprising:

a non-volatile storage system;

a volatile memory system; and

a Basic Input/Output System (BIOS) that is coupled to the non-volatile storage system and the volatile memory system, wherein the BIOS is configured to:

designate a portion of the volatile memory system as a virtual Non-Volatile Dual Inline Memory Module (NVDIMM);

reserve a first portion of the non-volatile storage system for storing virtual NVDIMM data;

store NVDIMM controller emulation data in a second portion of the non-volatile storage system;

report the virtual NVDIMM to an operating system using a NVDIMM Firmware Interface Table (NFIT);

emulate an NVDIMM controller for the virtual NVDIMM using the NVDIMM controller emulation data stored in the second portion of the non-volatile storage system, wherein the emulating the NVDIMM controller includes:

providing a virtual NVDIMM register for the virtual NVDIMM in a BIOS database included in the BIOS;

intercepting read and write instructions generated by the operating system and directed to the virtual NVDIMM;

executing, using the virtual NVDIMM register, the read and write instructions; and

transmitting, to the operating system in response to executing the read and write instructions, at least one response;

determine that a virtual NVDIMM storage event has occurred; and

copy, in response to determining that the virtual NVDIMM storage event has occurred, data from the portion of the volatile memory system designated as the virtual NVDIMM to the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data.

2. The system of claim 1 , wherein the BIOS is configured to:

determine that a virtual NVDIMM recovery event has occurred;

copy, in response to determining that the virtual NVDIMM recovery event has occurred, the data stored in the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data to the portion of the volatile memory system designated as the virtual NVDIMM.

3. The system of claim 1 , wherein the virtual NVDIMM storage event include a system power unavailability event, and wherein the BIOS utilizes battery power to copy the data from the portion of the volatile memory system designated as the virtual NVDIMM to the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data.

4. The system of claim 1 , wherein the designating the portion of the volatile memory system as the virtual NVDIMM includes:

identifying, via the execution of Memory Reference Code (MRC), the portion of the volatile memory system; and

modifying the identification of the portion of the volatile memory system to indicate that the portion of the volatile memory system is a NVDIMM.

5. The system of claim 1 , wherein the storing the NVDIMM controller emulation data in the second portion of the non-volatile storage system includes storing at least one of a label and Original Equipment Manufacturer (OEM) data on the second portion of the non-volatile storage system.

6. 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 Basic Input/Output System (BIOS) engine that is configured to:

designate a portion of a volatile memory system as a virtual Non-Volatile Dual Inline Memory Module (NVDIMM);

reserve a first portion of a non-volatile storage system for storing virtual NVDIMM data;

store NVDIMM controller emulation data in a second portion of the non-volatile storage system;

report the virtual NVDIMM to an operating system using a NVDIMM Firmware Interface Table (NFIT);

emulate an NVDIMM controller for the virtual NVDIMM using the NVDIMM controller emulation data stored in the second portion of the non-volatile storage system, wherein the emulating the NVDIMM controller includes

providing a virtual NVDIMM register for the virtual NVDIMM in a BIOS database included in the BIOS;

intercepting read and write instructions generated by the operating system and directed to the virtual NVDIMM;

executing, using the virtual NVDIMM register, read and write instructions; and

transmitting, to the operating system in response to executing the read and write instructions, at least one response;

determine that a virtual NVDIMM storage event has occurred; and

copy, in response to determining that the virtual NVDIMM storage event has occurred, data from the portion of the volatile memory system designated as the virtual NVDIMM to the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data.

7. The IHS of claim 6 , wherein the BIOS engine is configured to:

determine that a virtual NVDIMM recovery event has occurred;

copy, in response to determining that the virtual NVDIMM recovery event has occurred, the data stored in the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data to the portion of the volatile memory system designated as the virtual NVDIMM.

8. The IHS of claim 6 , wherein the virtual NVDIMM storage event include a system power unavailability event, and wherein the BIOS engine utilizes battery power to copy the data from the portion of the volatile memory system designated as the virtual NVDIMM to the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data.

9. The IHS of claim 6 , wherein the designating the portion of the volatile memory system as the virtual NVDIMM includes:

identifying, via the execution of Memory Reference Code (MRC), the portion of the volatile memory system; and

modify the identification of the portion of the volatile memory system to indicate that the portion of the volatile memory system is a NVDIMM.

10. The IHS of claim 6 , wherein the storing the NVDIMM controller emulation data in the second portion of the non-volatile storage system includes storing at least one of a label and Original Equipment Manufacturer (OEM) data on the second portion of the non-volatile storage system.

11. The IHS of claim 6 , wherein the read and write instructions generated by the operating system includes Advanced Configuration and Power Interface (ACPI) Device Specific Message (DSM) read and write instructions.

12. A method for providing virtual non-volatile memory, comprising:

designating, by a Basic Input/Output System (BIOS), a portion of a volatile memory system as a virtual Non-Volatile Dual Inline Memory Module (NVDIMM);

reserving, by the BIOS, a first portion of a non-volatile storage system for storing virtual NVDIMM data;

storing, by the BIOS, NVDIMM controller emulation data in a second portion of the non-volatile storage system that stores data used to emulate a NVDIMM controller;

reporting, by the BIOS, the virtual NVDIMM to an operating system using a NVDIMM Firmware Interface Table (NFIT);

emulating, by the BIOS, an NVDIMM controller for the virtual NVDIMM using the NVDIMM controller emulation data stored in the second portion of the non-volatile storage system, wherein the emulating the NVDIMM controller includes:

providing a virtual NVDIMM register for the virtual NVDIMM in a BIOS database included in the BIOS;

intercepting read and write instructions generated by the operating system and directed to the virtual NVDIMM;

executing, using the virtual NVDIMM register, the read and write instructions; and

transmitting, to the operating system in response to executing the read and write instructions, at least one response;

determining, by the BIOS, that a virtual NVDIMM storage event has occurred; and

copying, by the BIOS in response to determining that the virtual NVDIMM storage event has occurred, data from the portion of the volatile memory system designated as the virtual NVDIMM to the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data.

13. The method of claim 12 , further comprising:

determining, by the BIOS, that a virtual NVDIMM recovery event has occurred;

copying, by the BIOS in response to determining that the virtual NVDIMM recovery event has occurred, the data stored in the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data to the portion of the volatile memory system designated as the virtual NVDIMM.

14. The method of claim 12 , wherein the virtual NVDIMM storage event include a system power unavailability event, and wherein the BIOS utilizes battery power to copy the data from the portion of the volatile memory system designated as the virtual NVDIMM to the first portion of the non-volatile storage system reserved for storing virtual NVDIMM data.

15. The method of claim 12 , wherein the designating the portion of the volatile memory system as the virtual NVDIMM includes:

identifying, via the execution of Memory Reference Code (MRC), the portion of the volatile memory system; and

modify the identification of the portion of the volatile memory system to indicate that the portion of the volatile memory system is a NVDIMM.

16. The method of claim 12 , wherein the storing the NVDIMM controller emulation data in the second portion of the non-volatile storage system includes storing at least one of a label and Original Equipment Manufacturer (OEM) data on the second portion of the non-volatile storage system.

17. The method of claim 12 , wherein the read and write instructions generated by the operating system include Advanced Configuration and Power Interface (ACPI) Device Specific Message (DSM) read and write instructions.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2020
From: CHAO, CHING-LUNG; WEI, HUNG-TAH; HOKAMA, AMBER
To: DELL PRODUCTS L.P.
Reel/Frame 053326/0505 →