WO2015122924A1 - Object based persistent main memory - Google Patents

Object based persistent main memory Download PDF

Info

Publication number
WO2015122924A1
WO2015122924A1 PCT/US2014/016627 US2014016627W WO2015122924A1 WO 2015122924 A1 WO2015122924 A1 WO 2015122924A1 US 2014016627 W US2014016627 W US 2014016627W WO 2015122924 A1 WO2015122924 A1 WO 2015122924A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
persistent memory
cpu
given
persistent
Prior art date
Application number
PCT/US2014/016627
Other languages
French (fr)
Inventor
Boris Zuckerman
Taciano PEREZ
Carlos Haas
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2014/016627 priority Critical patent/WO2015122924A1/en
Publication of WO2015122924A1 publication Critical patent/WO2015122924A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Definitions

  • Persistent memory may be main memory implemented using non- volatile memory (NVM) technologies, such as flash, resistive random-access memory (RRAM), phase-change RAM (PCRAM), and memristor. PM may be durable across power cycles. PM may also be directly addressable by processors at byte granularity.
  • NVM non- volatile memory
  • RRAM resistive random-access memory
  • PCRAM phase-change RAM
  • Fig. 1 is a block diagram illustrating a system with a computer having object-based management of a persistent memory (PM) in examples of the present disclosure.
  • PM persistent memory
  • Fig. 2 is a block diagram illustrating a PM controller of Fig. 1 in examples of the present disclosure
  • Fig. 3 is a flowchart of a method for a PM controller of Fig. 1 to provide object-based management in examples of the present disclosure
  • Fig. 4 is a flowchart of a method for a PM controller of Fig. 1 to handle store and load instructions by creating, writing, and reading PM block objects in examples of the present disclosure
  • Fig. 5 is a block diagram of a device for implementing a PM controller of Fig. 1 in examples of the present disclosure.
  • the term “includes” means includes but not limited to, the term “including” means including but not limited to.
  • the terms “a” and “an” are intended to denote at least one of a particular element.
  • the term “based on” means based at least in part on.
  • the term “or” is used to refer to a nonexclusive such that “A or B” includes “A but not B,” “B but not A,” and “A and B” unless otherwise indicated.
  • the use of persistent memory (PM) may change the balance of responsibilities and capabilities among central processing units (CPUs) and memory controllers. Persistent memory controllers may become “smarter” by providing support for atomicity of updates, security of content, and sharing of resources between computers. There are other advanced features that can be introduced and autonomously executed by PM controllers.
  • a method for a PM controller and the PM controller are provided to implement an object-based interface to manage a PM serving as main memory for a central processing unit (CPU).
  • the PM controller provides various object types and methods, also referred to as "functions," to perform tasks on objects.
  • the PM controller may share the PM between computers while limiting the scope of exposure.
  • FIG. 1 is a block diagram illustrating a computing system 100 having object-based management of a PM in example of the present disclosure.
  • Computing system 100 includes a first node A with CPUs 102-1 and 102-2 connected over a memory bus 108-1 to a PM controller 104-1 to access a PM 106-1.
  • PM 106-1 serves as the main memory for CPUs 102-1 and 102-2.
  • CPUs 102-1 and 102-2 may be connected over memory bus 108-1 to access a volatile random access memory (RAM) 110-1.
  • RAM volatile random access memory
  • PM 106-1 and volatile RAM 110- 1 serve as a hybrid main memory for CPUs 102-1 and 102-2.
  • CPUs 102-1 and 102-2 may utilize the different advantages offered by the PM (e.g., persistence) and the volatile RAM (e.g., speed).
  • volatile RAM 110-1 also serves as a working memory for PM controller 104-1, which accesses volatile RAM 110-1 over memory bus 108-1.
  • CPUs 102-1 and 102-2 may be connected over memory bus 108-1 to a storage interconnect (IC) controller 112-1 to access secondary storage devices.
  • Storage IC controller 112-1 is connected over a storage IC 116-1 (e.g., PCI Express, InfiniBand, Ethernet,) to a PM controller 104-2 to access a PM 106-2.
  • Storage IC controller 112-1 is also connected over storage IC 116-1 to a hard disk or solid state drive 114-1.
  • computing system 100 further includes a second node B similarly configured as node A.
  • Node B includes CPUs 102-3 and 102-4 connected over a memory bus 108-2 to a PM controller 104-3 to access a PM 106-3.
  • CPUs 102-3 and 102-4 may be connected over memory bus 108-2 to access a volatile RAM 110-2.
  • PM 106-3 and volatile RAM 110-2 serve as a hybrid main memory for CPUs 102-3 and 102-4.
  • volatile RAM 110-2 also serves as a working memory for PM controller 104-3, which accesses volatile RAM 110- 2 over memory bus 108-2.
  • CPUs 102-3 and 102-4 may be connected over memory bus 108-2 to a storage IC controller 112-2 to access secondary storage devices.
  • Storage IC controller 112-2 is connected over a storage IC 116-2 (e.g., PCI Express, InfiniBand, Ethernet,) to a PM controller 104-4 to access a PM 106-4.
  • Storage IC controller 112-2 is also connected over storage IC 116-2 to a hard disk or solid state drive 114-2.
  • Memory bus 108-1 in node A may be connected to memory bus 108-2 in node B.
  • PM controllers 104-1 and 104-3 present a uniform memory space to all CPUs 102-1, 102-2, 102-3, and 102- 4.
  • PM controllers 104-1 and 104-3 may interact in a client-server relationship.
  • storage IC 116-1 in node A may be connected to storage IC 116-2 in node B.
  • PM controllers 104-2 and 104-4 present a uniform storage space to all CPUs 102-1, 102-2, 102-3, and 102-4.
  • PM controllers 104-2 and 104-4 may interact in a client-server relationship.
  • Fig. 2 is a block diagram illustrating a PM controller 104 in examples of the present disclosure.
  • PM controller 104 refers to any one of PM controllers 104-1, 104-2, 104-3, and 104-4 in Fig. 1.
  • PM controller 104 includes a local host interface 202 to communicate with CPUs 102 (Fig. 1).
  • CPUs 102 refer to any two or more of CPUs 102-1, 102-2, 102-3, and 102-4 in Fig. 1, and CPU 102 refers to any of CPUs 102-1, 102-2, 102-3, and 102-4 in Fig. 1.
  • PM controller 104 uniquely identifies each PM object by a PM object ID (PMOID).
  • PM controller 104 may generate a PMOID when PM controller 104 creates a PM object and the PMOID may include a unique identification of PM 106 and an internal rolling count.
  • a PMOID may remain the same when an object moves from one computer to another unless the object is re-initialized.
  • PM controller 104 may be able to have various object types (classes) to create individual objects such as volumes 206, files 208, blocks 210, PM device 212, and PM volatile areas 214.
  • PM controller 104 includes an address mapper 204 that maps the objects to memory locations in the internal address space of PM 106.
  • an object exposes data elements that do not exist in their "pure" form, such as data elements that are encrypted, compressed, thinly provisioned, or reassembled from remote PMs.
  • Address mapper 204 represents these data elements as a contiguous range of memory to CPUs 102.
  • Table 1 shows the various object types that can be maintained by PM controller 104-1 in examples of the present disclosure.
  • the volatile areas in PM 106 defined by PM volatile areas 214 are to store sensitive data, such as raw data before encryption, that are to be deleted before powering off or after being turned on after power loss.
  • PM controller 104 may access volatile RAM 110 (Fig. 1) instead of PM volatile areas 214 in PM 106.
  • Volatile RAM 110 refers to any of volatile RAM 110-1 and 110-2.
  • Table 2 shows the various properties of PM objects. Some properties follow a PM object when it moves between computers while other properties can change reflecting some characteristics inherited from a higher level.
  • EncryptionMethod The selected algorithm and key length to be used for encryption if PM is configured to be encrypted
  • PM controller 104 provides various methods 216 to perform tasks on the PM objects.
  • Methods 216 may include operations that would have been previously performed by CPU 102, such as compression, encryption, and duplication. These operations are now offloaded from a CPU to PM controller 104. All methods may be "sent" to an object representation mapped into a working set of a process in kernel or user mode. Examples of methods 216 are provided hereafter.
  • the String ListCaps() includes ListCaps() which includes functionality to provide a list of available public capabilities, such as properties and methods and their descriptions (arguments, results, etc.).
  • PM_ENUM_CONTEXT object which includes functionality to enumerate PM objects. This method can be done either in "global" scope of a PM or in a local scope of a PM object. After PM_ENUM_CONTEXT is created, it may execute a method Enum() that returns a next PM object or "end_of_list" indicator.
  • the PMO Create([settable_properties]) method includes Create() method which includes functionality that is invoked to create a child PM object with optional settable characteristics.
  • the "settable characteristics" may include a private key used to encrypt data and validate access rights on mapping into the address space of a computer.
  • the Encrypted(ON/OFF[, PrKey]) method includes Encrypted() method which includes functionality to turn on or off security for a given PM object. In some examples, it is up to the implementation of a consuming application handle how and where to store a public key. A PM controller will require that this key is provided in order to map a PM object into the address space of a consumer, such as a computer (a CPU), a virtual machine, or an application.
  • the change in key based access control shell occurs as soon as change is requested.
  • actual encrypting or decrypting of the content may happen in the background and may take a long time.
  • the PM controller may indicate if the process is completed by exposing a value of pmStable.
  • map2core(pub_key, 7) method includes map2core() which includes
  • top level PM objects such as PM_VOLUME and PM_BLOCK, are mapped by the BIOS or by special
  • the embedded PM objects such as PM_FILE are mapped automatically by file systems or database managements systems.
  • the caller may provide a key and a range.
  • the setSize() / Size() method include setSize() method which includes functionality to adjust the maximum size of a PM object.
  • the PM object keeps tracks of updates and may support "thin provisioning" when un-updated areas are not allocated. If size is reduced over updates were recorded in truncated area, a special truncate flag shell indicate application awareness and consent.
  • the Size() method includes functionality to return the size of a PM object. It may be controlled by a parameter indicating when a caller needs a maximum size or a real size affected by thin provisioning.
  • the snap() / lsSnap()/ deleteSnap() / snapRollback() method includes The snap() method which includes functionality to preserve the state of a PM object. An optional name of the snapshot is provided as a parameter. If name is not provided, a snapshot may be named by the time when the snap() method was requested.
  • the IsSnapO lists all available snapshots.
  • the deleteSnap() includes functionality to delete a specific snapshot or a set of snapshots in a given time range.
  • the snapRollback() includes functionality to reset the current state of the object to a specified snapshot.
  • the map2core() method may take the name of a snapshot as a parameter to map a specific snapshot. Such a mapping may be read-only. However, some implementations may support read-write semantics.
  • the journal() / journalRead() method include journal() which includes functionality to enable and disables the act of logging any subsequent change in a PM object after its enablement using journaling. It is useful to validate consistency of the operations over the data, allowing rollback in the detection of errors or any undesired operation result.
  • the journalRead() methd includes functionality to allow the caller to read journal data about the object.
  • the cpuDistance(CPU_IDIICPU_ID_LIST) method includes functionality to return to the caller the minimal physical distance of the memory device where the object is stored to a specific (or a list) of CPUs.
  • the SEARCH_CONTEXT.search() method includes functionality to search a provided memory pattern and returns its offset in a structure containing the PMOID and mapped offset. When the search reaches the end of the object, End-Of-List indication is returned. If the object includes other descendant objects, it returns the PMOIDs of the descendants and the NO_OFFSET indicator. A caller has to make a next call potentially providing a public key to look inside of the embedded PM object. In some examples of the present disclosure, a caller may skip the embedded PM object and continue the search.
  • the compress() / decompress() methods include functionality to compress or decompress the content of a PM object. Note that compression or decompression "in place” may run for a long time.
  • the PM controller may indicate if the process is completed by exposing a value of pmStable.
  • the computeCRC() method includes functionality to compute the cyclic redundancy check (CRC) or another error-detecting code of a PM object's data.
  • the computeSHAO method includes functionality to compute the secure hash algorithm of a PM object's data.
  • the replicate() method includes functionality to replicate an object on one PM to another.
  • the clone() method includes functionality to copy an object on one PM to another. Note that cloning may create a similar object in the same host (node) or memory pool while replication is copying an object between different memory pools. Cloning may create secondary objects pointing to the same content while replication may take longer as it may move data.
  • Fig. 3 is a flowchart of a method 300 for a PM controller 104 (Figs. 1 and 2) to provide object-based management in examples of the present disclosure.
  • PM controller 104 may use method 300 when a consumer is configured for a PM controller that is capable of object-based management.
  • Method 300 may begin in block 302.
  • PM controller 104 receives a request from a CPU 102 to create an object based on one of object types 206 to 214 (Fig. 2) and write the object with data.
  • Block 302 may be followed by block 304.
  • PM controller 104 creates the object based on the object type identified in the request, assigns a PMOID to the object, maps the object to the internal address space of a PM 106 (Fig. 1), and writes the object with the data in the request.
  • Block 304 may be followed by block 306.
  • PM controller 104 receives from CPU 102 a request to perform one of methods 216 (Fig. 2) on the object. Block 306 may be followed by block 308.
  • PM controller 104 performs the method identified in the request. Block 308 may be followed by block 310.
  • PM controller 104 receives from CPU 102 a request to read, modify, or delete the object.
  • Block 310 may be followed by block 312.
  • PM controller 104 reads, modifies, or deletes the object.
  • Fig. 4 is a flowchart of a method 400 for a PM controller 104 (Figs. 1 and 2) to handle store and load instructions by creating, writing, and reading PM block objects in examples of the present disclosure.
  • PM controller 104 uses method 400 when a consumer is not configured for a PM controller that is capable of object-based management.
  • Method 400 may begin in block 402.
  • PM controller 104 receives from a CPU 102 (Fig. 1) a load request to write data to a memory address.
  • Block 402 may be followed by block 404.
  • PM controller 104 creates a PM block object, assigns a PMOID to the object, maps the memory address to the object, maps the object to address space of the internal address space of a PM 106 (Fig. 1), and writes the object with the data in the request.
  • Block 404 may be followed by block 406.
  • PM controller 104 receives from CPU 102 a store request to read data from a memory address. Block 406 may be followed by block 408.
  • PM controller 104 determines a PM block object mapped to the memory address and reads the data from the PM block object.
  • FIG. 5 is a block diagram of a device 500 for implementing PM controller 104 (Figs. 1 and 2) in examples of the present disclosure.
  • Instructions 502 for object-based management are stored in a non-transitory computer medium 504, such as a read-only memory.
  • a processor 506 executes instructions 502 to provide the described features and functionalities.
  • Processor 506 may store metadata 503 that describe the attributes and states of objects created by instructions 502.
  • Processor 506 may communicate with other PM controllers through network interface cards 508.

Abstract

A method is provided for a persistent memory controller using an object-based interface to handle persistent memory that acts as main memory of a central processing unit (CPU). In response to a first request from the CPU to create an object in persistent memory, the persistent memory controller is to create the object in the persistent memory which is main memory of the CPU. In response to a second request from the CPU to perform a function on the object, the persistent memory controller is to perform the function on the object.

Description

OBJECT BASED PERSISTENT MAIN MEMORY
BACKGROUND
[0001] Persistent memory (PM) may be main memory implemented using non- volatile memory (NVM) technologies, such as flash, resistive random-access memory (RRAM), phase-change RAM (PCRAM), and memristor. PM may be durable across power cycles. PM may also be directly addressable by processors at byte granularity.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] In the drawings:
Fig. 1 is a block diagram illustrating a system with a computer having object-based management of a persistent memory (PM) in examples of the present disclosure.
Fig. 2 is a block diagram illustrating a PM controller of Fig. 1 in examples of the present disclosure;
Fig. 3 is a flowchart of a method for a PM controller of Fig. 1 to provide object-based management in examples of the present disclosure;
Fig. 4 is a flowchart of a method for a PM controller of Fig. 1 to handle store and load instructions by creating, writing, and reading PM block objects in examples of the present disclosure; and
Fig. 5 is a block diagram of a device for implementing a PM controller of Fig. 1 in examples of the present disclosure.
[0003] Use of the same reference numbers in different figures indicates similar or identical elements.
DETAILED DESCRIPTION
[0004] As used herein, the term "includes" means includes but not limited to, the term "including" means including but not limited to. The terms "a" and "an" are intended to denote at least one of a particular element. The term "based on" means based at least in part on. The term "or" is used to refer to a nonexclusive such that "A or B" includes "A but not B," "B but not A," and "A and B" unless otherwise indicated. [0005] The use of persistent memory (PM) may change the balance of responsibilities and capabilities among central processing units (CPUs) and memory controllers. Persistent memory controllers may become "smarter" by providing support for atomicity of updates, security of content, and sharing of resources between computers. There are other advanced features that can be introduced and autonomously executed by PM controllers.
[0006] In examples of the present disclosure, a method for a PM controller and the PM controller are provided to implement an object-based interface to manage a PM serving as main memory for a central processing unit (CPU). The PM controller provides various object types and methods, also referred to as "functions," to perform tasks on objects. The PM controller may share the PM between computers while limiting the scope of exposure.
[0007] Fig. 1 is a block diagram illustrating a computing system 100 having object-based management of a PM in example of the present disclosure. Computing system 100 includes a first node A with CPUs 102-1 and 102-2 connected over a memory bus 108-1 to a PM controller 104-1 to access a PM 106-1. In some examples, PM 106-1 serves as the main memory for CPUs 102-1 and 102-2.
[0008] CPUs 102-1 and 102-2 may be connected over memory bus 108-1 to access a volatile random access memory (RAM) 110-1. In some examples, PM 106-1 and volatile RAM 110- 1 serve as a hybrid main memory for CPUs 102-1 and 102-2. CPUs 102-1 and 102-2 may utilize the different advantages offered by the PM (e.g., persistence) and the volatile RAM (e.g., speed). In some examples, volatile RAM 110-1 also serves as a working memory for PM controller 104-1, which accesses volatile RAM 110-1 over memory bus 108-1.
[0009] CPUs 102-1 and 102-2 may be connected over memory bus 108-1 to a storage interconnect (IC) controller 112-1 to access secondary storage devices. Storage IC controller 112-1 is connected over a storage IC 116-1 (e.g., PCI Express, InfiniBand, Ethernet,) to a PM controller 104-2 to access a PM 106-2. Storage IC controller 112-1 is also connected over storage IC 116-1 to a hard disk or solid state drive 114-1.
[0010] In some examples, computing system 100 further includes a second node B similarly configured as node A. Node B includes CPUs 102-3 and 102-4 connected over a memory bus 108-2 to a PM controller 104-3 to access a PM 106-3.
[0011] In node B, CPUs 102-3 and 102-4 may be connected over memory bus 108-2 to access a volatile RAM 110-2. In some examples, PM 106-3 and volatile RAM 110-2 serve as a hybrid main memory for CPUs 102-3 and 102-4. In some examples, volatile RAM 110-2 also serves as a working memory for PM controller 104-3, which accesses volatile RAM 110- 2 over memory bus 108-2.
[0012] CPUs 102-3 and 102-4 may be connected over memory bus 108-2 to a storage IC controller 112-2 to access secondary storage devices. Storage IC controller 112-2 is connected over a storage IC 116-2 (e.g., PCI Express, InfiniBand, Ethernet,) to a PM controller 104-4 to access a PM 106-4. Storage IC controller 112-2 is also connected over storage IC 116-2 to a hard disk or solid state drive 114-2.
[0013] Memory bus 108-1 in node A may be connected to memory bus 108-2 in node B. In some examples where distance and latency between nodes A and B are small, PM controllers 104-1 and 104-3 present a uniform memory space to all CPUs 102-1, 102-2, 102-3, and 102- 4. In other examples where distance and latency between nodes A and B are large, PM controllers 104-1 and 104-3 may interact in a client-server relationship.
[0014] Similarly storage IC 116-1 in node A may be connected to storage IC 116-2 in node B. In some examples where distance and latency between nodes A and B are small, PM controllers 104-2 and 104-4 present a uniform storage space to all CPUs 102-1, 102-2, 102-3, and 102-4. In other examples where distance and latency between nodes A and B are large, PM controllers 104-2 and 104-4 may interact in a client-server relationship.
[0015] Fig. 2 is a block diagram illustrating a PM controller 104 in examples of the present disclosure. PM controller 104 refers to any one of PM controllers 104-1, 104-2, 104-3, and 104-4 in Fig. 1. PM controller 104 includes a local host interface 202 to communicate with CPUs 102 (Fig. 1). CPUs 102 refer to any two or more of CPUs 102-1, 102-2, 102-3, and 102-4 in Fig. 1, and CPU 102 refers to any of CPUs 102-1, 102-2, 102-3, and 102-4 in Fig. 1.
[0016] PM controller 104 uniquely identifies each PM object by a PM object ID (PMOID). PM controller 104 may generate a PMOID when PM controller 104 creates a PM object and the PMOID may include a unique identification of PM 106 and an internal rolling count. A PMOID may remain the same when an object moves from one computer to another unless the object is re-initialized.
[0017] PM controller 104 may be able to have various object types (classes) to create individual objects such as volumes 206, files 208, blocks 210, PM device 212, and PM volatile areas 214.
[0018] PM controller 104 includes an address mapper 204 that maps the objects to memory locations in the internal address space of PM 106. In some examples, an object exposes data elements that do not exist in their "pure" form, such as data elements that are encrypted, compressed, thinly provisioned, or reassembled from remote PMs. Address mapper 204 represents these data elements as a contiguous range of memory to CPUs 102.
[0019] Table 1 shows the various object types that can be maintained by PM controller 104-1 in examples of the present disclosure.
[0020] Table 1.
Figure imgf000005_0001
[0021] The volatile areas in PM 106 defined by PM volatile areas 214 are to store sensitive data, such as raw data before encryption, that are to be deleted before powering off or after being turned on after power loss. In some examples of the present disclosure, PM controller 104 may access volatile RAM 110 (Fig. 1) instead of PM volatile areas 214 in PM 106. Volatile RAM 110 refers to any of volatile RAM 110-1 and 110-2.
[0022] Table 2 shows the various properties of PM objects. Some properties follow a PM object when it moves between computers while other properties can change reflecting some characteristics inherited from a higher level.
[0023] Table 2.
Figure imgf000006_0001
PmStable True indication that object is not reorganized by a long running process
EncryptionMethod The selected algorithm and key length to be used for encryption if PM is configured to be encrypted
[0024] PM controller 104 provides various methods 216 to perform tasks on the PM objects. Methods 216 may include operations that would have been previously performed by CPU 102, such as compression, encryption, and duplication. These operations are now offloaded from a CPU to PM controller 104. All methods may be "sent" to an object representation mapped into a working set of a process in kernel or user mode. Examples of methods 216 are provided hereafter.
[0025] The String ListCaps() includes ListCaps() which includes functionality to provide a list of available public capabilities, such as properties and methods and their descriptions (arguments, results, etc.).
[0026] The PM_ENUM_CONTEXT :: EnumInit([PMO]) and Enum() includes
PM_ENUM_CONTEXT object which includes functionality to enumerate PM objects. This method can be done either in "global" scope of a PM or in a local scope of a PM object. After PM_ENUM_CONTEXT is created, it may execute a method Enum() that returns a next PM object or "end_of_list" indicator.
[0027] The PMO Create([settable_properties]) method includes Create() method which includes functionality that is invoked to create a child PM object with optional settable characteristics. The "settable characteristics" may include a private key used to encrypt data and validate access rights on mapping into the address space of a computer.
[0028] The Encrypted(ON/OFF[, PrKey]) method includes Encrypted() method which includes functionality to turn on or off security for a given PM object. In some examples, it is up to the implementation of a consuming application handle how and where to store a public key. A PM controller will require that this key is provided in order to map a PM object into the address space of a consumer, such as a computer (a CPU), a virtual machine, or an application.
[0029] In some examples, the change in key based access control shell occurs as soon as change is requested. However, actual encrypting or decrypting of the content may happen in the background and may take a long time. The PM controller may indicate if the process is completed by exposing a value of pmStable.
[0030] The map2core(pub_key, ...) method includes map2core() which includes
functionality to map or expose a given PM object to an address space of a consumer, such as a computer (a CPU), a virtual machine, or an application. It may be done on a level of access rights or on a level of mapping to a physical address space. Typically "top level" PM objects, such as PM_VOLUME and PM_BLOCK, are mapped by the BIOS or by special
initialization commands. The embedded PM objects, such as PM_FILE are mapped automatically by file systems or database managements systems. The caller may provide a key and a range.
[0031] The setSize() / Size() method include setSize() method which includes functionality to adjust the maximum size of a PM object. The PM object keeps tracks of updates and may support "thin provisioning" when un-updated areas are not allocated. If size is reduced over updates were recorded in truncated area, a special truncate flag shell indicate application awareness and consent.
[0032] The Size() method includes functionality to return the size of a PM object. It may be controlled by a parameter indicating when a caller needs a maximum size or a real size affected by thin provisioning.
[0033] The snap() / lsSnap()/ deleteSnap() / snapRollback() method includes The snap() method which includes functionality to preserve the state of a PM object. An optional name of the snapshot is provided as a parameter. If name is not provided, a snapshot may be named by the time when the snap() method was requested. The IsSnapO lists all available snapshots. The deleteSnap() includes functionality to delete a specific snapshot or a set of snapshots in a given time range. The snapRollback() includes functionality to reset the current state of the object to a specified snapshot.
[0034] In some examples, the map2core() method may take the name of a snapshot as a parameter to map a specific snapshot. Such a mapping may be read-only. However, some implementations may support read-write semantics.
[0035] The journal() / journalRead() method include journal() which includes functionality to enable and disables the act of logging any subsequent change in a PM object after its enablement using journaling. It is useful to validate consistency of the operations over the data, allowing rollback in the detection of errors or any undesired operation result. The journalRead() methd includes functionality to allow the caller to read journal data about the object.
[0036] The cpuDistance(CPU_IDIICPU_ID_LIST) method includes functionality to return to the caller the minimal physical distance of the memory device where the object is stored to a specific (or a list) of CPUs.
[0037] The SEARCH_CONTEXT.search() method includes functionality to search a provided memory pattern and returns its offset in a structure containing the PMOID and mapped offset. When the search reaches the end of the object, End-Of-List indication is returned. If the object includes other descendant objects, it returns the PMOIDs of the descendants and the NO_OFFSET indicator. A caller has to make a next call potentially providing a public key to look inside of the embedded PM object. In some examples of the present disclosure, a caller may skip the embedded PM object and continue the search.
[0038] The compress() / decompress() methods include functionality to compress or decompress the content of a PM object. Note that compression or decompression "in place" may run for a long time. The PM controller may indicate if the process is completed by exposing a value of pmStable.
[0039] The computeCRC() method includes functionality to compute the cyclic redundancy check (CRC) or another error-detecting code of a PM object's data.
[0040] The computeSHAO method includes functionality to compute the secure hash algorithm of a PM object's data.
[0041] The replicate() method includes functionality to replicate an object on one PM to another.
[0042] The clone() method includes functionality to copy an object on one PM to another. Note that cloning may create a similar object in the same host (node) or memory pool while replication is copying an object between different memory pools. Cloning may create secondary objects pointing to the same content while replication may take longer as it may move data.
[0043] Fig. 3 is a flowchart of a method 300 for a PM controller 104 (Figs. 1 and 2) to provide object-based management in examples of the present disclosure. In some examples, PM controller 104 may use method 300 when a consumer is configured for a PM controller that is capable of object-based management. Method 300 may begin in block 302.
[0044] In block 302, PM controller 104 receives a request from a CPU 102 to create an object based on one of object types 206 to 214 (Fig. 2) and write the object with data. Block 302 may be followed by block 304.
[0045] In block 304, PM controller 104 creates the object based on the object type identified in the request, assigns a PMOID to the object, maps the object to the internal address space of a PM 106 (Fig. 1), and writes the object with the data in the request. Block 304 may be followed by block 306.
[0046] In block 306, PM controller 104 receives from CPU 102 a request to perform one of methods 216 (Fig. 2) on the object. Block 306 may be followed by block 308.
[0047] In block 308, PM controller 104 performs the method identified in the request. Block 308 may be followed by block 310.
[0048] In block 310, PM controller 104 receives from CPU 102 a request to read, modify, or delete the object. Block 310 may be followed by block 312.
[0049] In block 312, PM controller 104 reads, modifies, or deletes the object.
[0050] It should be understood that the above is for illustrative purposes and that other examples may be employed to implement the techniques of the present disclosure.
[0051] Fig. 4 is a flowchart of a method 400 for a PM controller 104 (Figs. 1 and 2) to handle store and load instructions by creating, writing, and reading PM block objects in examples of the present disclosure. PM controller 104 uses method 400 when a consumer is not configured for a PM controller that is capable of object-based management. Method 400 may begin in block 402. [0052] In block 402, PM controller 104 receives from a CPU 102 (Fig. 1) a load request to write data to a memory address. Block 402 may be followed by block 404.
[0053] In block 404, PM controller 104 creates a PM block object, assigns a PMOID to the object, maps the memory address to the object, maps the object to address space of the internal address space of a PM 106 (Fig. 1), and writes the object with the data in the request. Block 404 may be followed by block 406.
[0054] In block 406, PM controller 104 receives from CPU 102 a store request to read data from a memory address. Block 406 may be followed by block 408.
[0055] In block 408, PM controller 104 determines a PM block object mapped to the memory address and reads the data from the PM block object.
[0056] Fig. 5 is a block diagram of a device 500 for implementing PM controller 104 (Figs. 1 and 2) in examples of the present disclosure. Instructions 502 for object-based management are stored in a non-transitory computer medium 504, such as a read-only memory. A processor 506 executes instructions 502 to provide the described features and functionalities. Processor 506 may store metadata 503 that describe the attributes and states of objects created by instructions 502. Processor 506 may communicate with other PM controllers through network interface cards 508.
[0057] Various other adaptations and combinations of features of the examples disclosed are within the scope of the present disclosure.

Claims

What is claimed is:
Claim 1: A method for a persistent memory controller using an object-based interface to handle persistent memory that is a main memory of a central processing unit (CPU), comprising: in response to a first request from the CPU to create an object in a persistent memory, creating the object in the persistent memory that is main memory of the CPU; and in response to a second request from the CPU to perform a function on the object, performing the function on the object.
Claim 2: The method of claim 1, wherein the object comprises a persistent memory volume or file.
Claim 3: The method of claim 1, further comprising creating a persistent memory volatile area object that describes an area in the persistent memory to be deleted at powering off or at power on after a power failure.
Claim 4: The method of claim 1, wherein the object incudes at least one property selected from a durability of the object, a longevity of the object, a performance indicator, a size of the object, a preferred cache line size for the object, a thin provisioning setting, an encryption setting, a high availability level, a number of children objects, and an encryption method.
Claim 5: The method of claim 1, wherein the function comprises clone data locally or duplicating data of a given object to another memory controller to another persistent memory that is another main memory of another CPU.
Claim 6: The method of claim 1, wherein the function is selected from a first function to list public capabilities, a second function to enumerate persistent memory objects, a third function to create a child persistent memory object, a fourth function to encrypt a given object, a fifth function to map a given object to an address space of a consumer, a sixth function to set a maximum size of a given object, a seventh function to take a snapshot of a given object, an eight function to log changes to a given object, a ninth function to return a physical distance between a given object and a given CPU, a tenth function to search for a data pattern, an eleventh function to compress a given object, a twelve function to compute an error-detecting code for a given object, and a thirteenth function to compute a hash for a given object.
Claim 7: The method of claim 1, further comprising: in response to a load request from the CPU, creating a persistent memory block object in the persistent main memory; and in response to a store request from the CPU, reading the persistent memory block object from the persistent main memory.
Claim 8: A system, comprising: a node, comprising; a central processing unit (CPU); a main memory comprising a persistent memory; and a persistent memory controller to: in response to a first request from the CPU to create an object in the persistent memory, creating the object in the persistent memory; and in response to a second request from the CPU to perform a function on the object, performing the function on the object.
Claim 9: The system of claim 8, wherein the object comprises a persistent memory volume object or a persistent memory file object.
Claim 10: The system of claim 8, further the persistent memory controller to create a persistent memory volatile area object that describes an area in the persistent memory to be deleted at powering off or at power on after a power failure.
Claim 11: The system of claim 8, wherein the object incudes at least one property selected from a durability of the object, a longevity of the object, a performance indicator, a size of the object, a preferred cache line size for the object, a thin provisioning setting, an encryption setting, a high availability level, a number of children objects, and an encryption method. Claim 12: The system of claim 8, further comprising: another node, comprising; another CPU; another main memory comprising the another persistent memory; and another persistent memory controller, wherein the function comprises cloning data locally or duplicating data of a given object to the another memory controller.
Claim 13: The system of claim 8, wherein the function is selected from a first function to list public capabilities, a second function to enumerate persistent memory objects, a third function to create a child persistent memory object, a fourth function to encrypt a given object, a fifth function to map a given object to an address space of a consumer, a sixth function to set a maximum size of a given object, a seventh function to take a snapshot of a given object, an eight function to log changes to a given object, a ninth function to return a physical distance between a given object and a given CPU, a tenth function to search for a data pattern, an eleventh function to compress a given object, a twelve function to compute an error-detecting code for a given object, and a thirteenth function to compute a hash for a given object.
Claim 14: The system of claim 8, further comprising: in response to a load request from the CPU, to create a persistent memory block object in the persistent main memory; and in response to a store request from the CPU, to read the persistent memory block object from the persistent main memory.
Claim 15: A non- transitory computer readable medium encoded with executable instructions for execution by a persistent memory controller to: in response to a first request from a central processing unit (CPU) to create an object in a persistent memory that is a main memory of the CPU, create the object in the persistent memory; and in response to a second request from the CPU to perform a function on the object, perform the function on the object.
PCT/US2014/016627 2014-02-14 2014-02-14 Object based persistent main memory WO2015122924A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2014/016627 WO2015122924A1 (en) 2014-02-14 2014-02-14 Object based persistent main memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/016627 WO2015122924A1 (en) 2014-02-14 2014-02-14 Object based persistent main memory

Publications (1)

Publication Number Publication Date
WO2015122924A1 true WO2015122924A1 (en) 2015-08-20

Family

ID=53800504

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/016627 WO2015122924A1 (en) 2014-02-14 2014-02-14 Object based persistent main memory

Country Status (1)

Country Link
WO (1) WO2015122924A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078060A1 (en) * 2000-02-14 2002-06-20 Next Computer, Inc. Transparent local and distributed memory management system
US20030028733A1 (en) * 2001-06-13 2003-02-06 Hitachi, Ltd. Memory apparatus
WO2004042584A2 (en) * 2002-11-07 2004-05-21 Koninklijke Philips Electronics N.V. Method and device for persistent-memory management
US20120084496A1 (en) * 2010-09-30 2012-04-05 Numonyx B.V. Validating persistent memory content for processor main memory
US20130290665A1 (en) * 2012-04-30 2013-10-31 Martin Heidel Storing large objects on disk and not in main memory of an in-memory database system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078060A1 (en) * 2000-02-14 2002-06-20 Next Computer, Inc. Transparent local and distributed memory management system
US20030028733A1 (en) * 2001-06-13 2003-02-06 Hitachi, Ltd. Memory apparatus
WO2004042584A2 (en) * 2002-11-07 2004-05-21 Koninklijke Philips Electronics N.V. Method and device for persistent-memory management
US20120084496A1 (en) * 2010-09-30 2012-04-05 Numonyx B.V. Validating persistent memory content for processor main memory
US20130290665A1 (en) * 2012-04-30 2013-10-31 Martin Heidel Storing large objects on disk and not in main memory of an in-memory database system

Similar Documents

Publication Publication Date Title
US11853780B2 (en) Architecture for managing I/O and storage for a virtualization environment
Shan et al. Distributed shared persistent memory
US20240020003A1 (en) Hardware accessible memory fabric
JP6389268B2 (en) Durability features that dynamically modify individual data volumes
US9652265B1 (en) Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US9256456B1 (en) Architecture for managing I/O and storage for a virtualization environment
US11954220B2 (en) Data protection for container storage
EP2992439B1 (en) Selective backup of program data to non-volatile memory
CN110795206A (en) System and method for facilitating cluster-level caching and memory space
US10042719B1 (en) Optimizing application data backup in SMB
EP2979187B1 (en) Data flush of group table
Liu et al. LibreKV: A persistent in-memory key-value store
US11068192B1 (en) Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source
US11200210B2 (en) Method of efficient backup of distributed file system files with transparent data access
WO2020231392A1 (en) Distributed virtual file system with shared page cache
Meyer et al. Supporting heterogeneous pools in a single ceph storage cluster
US11822804B2 (en) Managing extent sharing between snapshots using mapping addresses
WO2015122924A1 (en) Object based persistent main memory
US11537297B1 (en) Deleting snapshot pages using sequence numbers and page lookups
US11755538B2 (en) Distributed management of file modification-time field
US20230028678A1 (en) Determining shared nodes between snapshots using probabilistic data structures
US10235098B1 (en) Writable clones with minimal overhead
CN117296034A (en) Role enforcement for storage-as-a-service

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14882309

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14882309

Country of ref document: EP

Kind code of ref document: A1