WO2015114644A1

Persistent pointers for programs running on nvram based computers

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.

WO2015114644A1, drawing sheet 1
Sheet 1 of 4

Term

No projected expiry on record.

  1. Priority and filed
  2. Published
  3. Today

15 claims: 3 independent, 12 dependent

  1. 1
    CLAIMS What is claimed is:1. 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.
  2. 7
    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.
  3. 11
    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.