IP Library › Granted Patent US 10,108,402
Granted Patent B2
US 10,108,402 · App. 15/114,370 · Granted Oct 23, 2018

Persistent pointers for programs running on NVRAM based computers

Inventors: Shyam Sankar Gopalakrishnan (Bangalore, IN); Pramod Kumar Mangalore (Bangalore, IN); Prashanth K E (Bangalore, IN); Sandesh V Madhyastha (Bangalore, IN)
Assignee: Hewlett Packard Enterprise Development LP
G06F8/434G06F8/423G06F12/109G06F8/41G06F8/427G06F8/447G06F9/44505G06F2212/1041G06F2212/202G06F2212/657
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 10,108,402
App. No.
15/114,370
Granted
Oct 23, 2018
Kind
B2
Abstract

In one example implementation, a method for generating persistent pointers using non-volatile random access memory (NVRAM) compiler directives in a program for NVRAM based computing systems includes generating a program including modified variables. The modified variables include NVRAM compiler directives indicative of persistent pointer type. The method further includes generating assembly code, including persistent pointer enablers, using the program including the modified variables by a compiler. Furthermore, the method includes mapping information of each NVRAM segment formed by the program with an associated physical address in NVRAM by an NVRAM driver residing in the NVRAM or main memory, maintaining an NVRAM registry including the mapped information by the NVRAM driver, determining valid virtual addresses of processes during runtime using the generated assembly code including the persistent pointer enablers and the NVRAM registry including the mapped information, and generating the persistent pointers from the valid virtual addresses during runtime.

Claims (48)

1. A method for generating persistent pointers using NVRAM compiler directives in a program for non-volatile random access memory (NVRAM) based computing systems, comprising:

generating a program including modified variables, wherein the modified variables include NVRAM compiler directives indicative of persistent pointer type;

generating assembly code, including persistent pointer enablers, using the program including the modified variables by a compiler;

mapping information of each NVRAM segment formed by the program with an associated physical address in an NVRAM by an NVRAM driver residing in the NVRAM or main memory;

maintaining an NVRAM registry including the mapped information, by the NVRAM driver;

determining valid virtual addresses of processes during runtime using the generated assembly code including the persistent pointer enablers and the NVRAM registry including the mapped information; and

generating, during runtime, the persistent pointers from the valid virtual addresses using the generated assembly code, wherein the information of each NVRAM segment comprises a unique NVRAM segment name, segment identifier, physical address of a NVRAM page that is part of the respective NVRAM segment and attributes assigned to the respective NVRAM segment by an operating system.

2. The method of claim 1 , wherein generating the assembly code, including persistent pointer enablers, using the program including the modified variables comprises:

generating the assembly code, including NVRAM segment numbers and associated offset within the NVRAM segment to form the persistent pointer that is stored in the NVRAM, using the program including the modified variables;

calling process interfaces of the NVRAM driver to map NVRAM segments containing the modified variables; and

generating the virtual addresses of the processes from the physical addresses and vice-versa.

3. The method of claim 1 , comprising:

storing the NVRAM registry in an NVRAM segment or in an external persistent memory that is mapped to a pre-defined physical address.

4. The method of claim 1 , wherein the NVRAM driver is a kernel loadable plug-in module.

5. A system for generating persistent pointers using non-volatile random access memory (NVRAM) compiler directives in a program for NVRAM based computing systems comprising:

a server; and

a computing system communicatively coupled to the server, wherein the computing system comprises:

an NVRAM; and

a main memory that is communicatively coupled with the NVRAM, wherein the NVRAM includes an NVRAM registry, wherein an NVRAM driver resides in the main memory or the NVRAM, wherein the server includes a compiler, and wherein the compiler includes an NVRAM compiler directive code generator to:

generate a program including modified variables, wherein the modified variables include NVRAM compiler directives indicative of persistent pointer type;

generate assembly code, including persistent pointer enablers, using the program including the modified variables, by the NVRAM compiler directive code generator;

map information of each NVRAM segment formed by the program with an associated physical address in the NVRAM by the NVRAM driver;

maintain the NVRAM registry including the mapped information, by the NVRAM driver;

determine valid virtual addresses of processes during runtime using the generated assembly code including the persistent pointer enablers and the NVRAM registry including the mapped information, by the NVRAM driver; and

generate the persistent pointers from the valid virtual addresses during runtime, by the generated assembly code.

6. The system of claim 5 , wherein the information of an NVRAM segment comprises a unique NVRAM segment name, segment identifier, physical address of a NVRAM page that is part of the NVRAM segment and attributes assigned to the NVRAM segment by an operating system.

7. The system of claim 5 , further configured to:

generating the assembly code, including NVRAM segment numbers and associated offset within the NVRAM segment to form the persistent pointer that is stored in the NVRAM, using the program including the modified variables;

calling process interfaces of the NVRAM driver to map NVRAM segments containing the modified variables; and

generating the virtual addresses of the processes from the physical addresses and vice-versa.

8. The system of claim 5 , further configured to:

storing the NVRAM registry in an NVRAM segment or in an external persistent memory that is mapped to a pre-defined physical address.

9. The system of claim 5 , wherein the NVRAM driver is a kernel loadable plug-in module.

10. The system of claim 5 , wherein the main memory comprises an NVRAM and/or DRAM.

11. A non-transitory computer readable storage medium comprising a set of instructions executable by at least one processor resource to:

generate a program including modified variables, wherein the modified variables include non-volatile random access memory (NVRAM) compiler directives indicative of persistent pointer type;

generate assembly code, including persistent pointer enablers, using the program including the modified variables by a compiler;

map information of each NVRAM segment formed by the program with an associated physical address in an NVRAM by an NVRAM driver residing in the NVRAM or main memory;

maintain an NVRAM registry including the mapped information, by the NVRAM driver;

determine valid virtual addresses of processes during runtime using the generated assembly code including the persistent pointer enablers and the NVRAM registry including the mapped information; and

generate persistent pointers from the valid virtual addresses during runtime using the generated assembly code

wherein the information of each NVRAM segment comprises a unique NVRAM segment name, segment identifier, physical address of a NVRAM page that is part of the respective NVRAM segment and attributes assigned to the respective NVRAM segment by an operating system.

12. The non-transitory computer readable storage medium of claim 11 , wherein generating the assembly code, including persistent pointer enablers, using the program including the modified variables comprises:

generating the assembly code, including NVRAM segment numbers and associated offset within the NVRAM segment to form the persistent pointer that is stored in the NVRAM, using the program including the modified variables;

calling process interfaces of the NVRAM driver to map NVRAM segments containing the modified variables; and

generate the virtual addresses of the processes from the physical addresses and vice-versa.

13. The non-transitory computer readable storage medium of claim 11 , comprising:

storing the NVRAM registry in an NVRAM segment or in an external persistent memory that is mapped to a pre-defined physical address.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2016
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 040873/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2016
From: GOPALAKRISHNAN SHYAM, SANKAR; PRAMOD KUMAR, MANGALORE; KAGGANTI ESWARIPRASAD, PRASHANTH; SANDESH V, MADHYASTHA
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 040878/0853 →
Continuity (1)
Related Publication 20160342399A1 · Nov 24, 2016
Cited By (2)
US 12,204,907 US 12,748,597