Sharing Data Fabric for Coherent-Distributed Caching of Multi-Node Shared-Distributed Flash Memory
First Claim
1. A global shared flash-memory system comprising:
- a plurality of compute nodes, each compute node in the plurality of compute nodes comprising;
a flash memory for storing homed objects in non-volatile solid-state memory cells;
a processor for executing an application program and threads;
a volatile memory, coupled to the processor, for storing cached objects, wherein the cached objects are copies of remote homed objects stored at remote compute nodes in the plurality of compute nodes;
a network interface controller (NIC), coupled by a network to other compute nodes, and responsive to the processor, that sends local copies of the homed objects stored in the flash memory to a first compute node in the plurality of compute nodes, and that receives from a second compute node in the plurality of compute nodes remote copies of the remote homed objects stored in the flash memory of the second compute node;
a Sharing Data Fabric (SDF) component executing on the processor, that enables storing the remote copies of the remote homed objects received by the NIC into the volatile memory as the cached objects;
wherein the application program executing on the processor accesses the cached objects from the volatile memory, including cached objects that are remote copies of the remote homed objects stored in the flash memory of the remote compute nodes in the plurality of compute nodes;
wherein a plurality of the SDF component, executing on a plurality of the processor in the plurality of compute nodes, copy the remote homed objects from a plurality of the flash memory in the plurality of compute nodes through the network for storage in the volatile memory as the cached objects,wherein the remote homed objects from the flash memory are copied through the network for storage in the volatile memory as cached objects.
4 Assignments
0 Petitions
Accused Products
Abstract
A Sharing Data Fabric (SDF) causes flash memory attached to multiple compute nodes to appear to be a single large memory space that is global yet shared by many applications running on the many compute nodes. Flash objects stored in flash memory of a home node are copied to an object cache in DRAM at an action node by SDF threads executing on the nodes. The home node has a flash object map locating flash objects in the home node'"'"'s flash memory, and a global cache directory that locates copies of the object in other sharing nodes. Application programs use an applications-programming interface (API) into the SDF to transparently get and put objects without regard to the object'"'"'s location on any of the many compute nodes. SDF threads and tables control coherency of objects in flash and DRAM.
-
Citations
20 Claims
-
1. A global shared flash-memory system comprising:
-
a plurality of compute nodes, each compute node in the plurality of compute nodes comprising; a flash memory for storing homed objects in non-volatile solid-state memory cells; a processor for executing an application program and threads; a volatile memory, coupled to the processor, for storing cached objects, wherein the cached objects are copies of remote homed objects stored at remote compute nodes in the plurality of compute nodes; a network interface controller (NIC), coupled by a network to other compute nodes, and responsive to the processor, that sends local copies of the homed objects stored in the flash memory to a first compute node in the plurality of compute nodes, and that receives from a second compute node in the plurality of compute nodes remote copies of the remote homed objects stored in the flash memory of the second compute node; a Sharing Data Fabric (SDF) component executing on the processor, that enables storing the remote copies of the remote homed objects received by the NIC into the volatile memory as the cached objects; wherein the application program executing on the processor accesses the cached objects from the volatile memory, including cached objects that are remote copies of the remote homed objects stored in the flash memory of the remote compute nodes in the plurality of compute nodes; wherein a plurality of the SDF component, executing on a plurality of the processor in the plurality of compute nodes, copy the remote homed objects from a plurality of the flash memory in the plurality of compute nodes through the network for storage in the volatile memory as the cached objects, wherein the remote homed objects from the flash memory are copied through the network for storage in the volatile memory as cached objects. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A Sharing Data Fabric (SDF) in a multi-processor distributed flash-memory system comprising:
-
a plurality of SDF threads executing on a plurality of processors on a plurality of storage nodes; a global shared flash memory that comprises flash memory storage units at each of the plurality of storage nodes; a volatile memory at each of the storage nodes and accessible by a local processor at the storage node; an interconnect that connects the plurality of storage nodes in a network; a messaging interface that sends and receives messages over the interconnect; an object cache in the volatile memory at an action node having a local processor executing an application program that accesses objects in the object cache; a request messager in the action node, activated when the application program requests a requested object that is not present in the object cache, the request messager generating a home-node name of a home node in the plurality of storage nodes and sending a request message with a requested-object identifier of the requested object to the home node over the interconnect using the messaging interface; a responding SDF thread in the plurality of SDF threads, the responding SDF thread running on a remote processor on the home node, the responding SDF thread responding to the request message sent by the request messager at the action node; a flash object map stored at the home node, the flash object map receiving the requested-object identifier extracted from the request message by the responding SDF thread and generating a location identifier; the responding SDF thread using the location identifier generated by the flash object map to access a homed object stored in a flash memory storage unit of the home node, the responding SDF thread sending a copy of the homed object to the action node in a response message sent over the interconnect using the messaging interface; and a cache loader at the action node, receiving the response message from the home node, the cache loader writing the copy of the homed object to the object cache in the volatile memory of the action node, the application program accessing the copy of the homed object in the object cache, whereby objects stored in the flash memory storage unit of the home node are sent to the action node for caching in the volatile memory. - View Dependent Claims (13, 14, 15)
-
-
16. A computer-implemented method for transparently sharing objects in a distributed shared flash memory comprising:
-
generating a call to a Sharing Data Fabric (SDF) from an application program when an object requested by the application program is not present in an object cache for a processor on an action node executing the application program; the SDF generating a home-node name of a home node from an object identifier of the object; sending a request-object message from the action node to the home node identified by the home-node name; searching a global cache directory at the home node with the object identifier of the object to find a sharing entry when the object is cached at a sharing node; when the global cache directory indicates that the object is not cached at the sharing node; reading a flash object map to obtain a flash location of a flash object having a same object identifier as the object in a flash memory controlled by the home node; reading the flash object from the flash memory of the home node and sending a message to the action node with the flash object; wherein the flash memory is a non-volatile solid-state memory and wherein the object cache is in a volatile solid-state memory; when the global cache directory indicates that the object is cached at the sharing node; reading the sharing entry to obtain a sharing-node name of the sharing node; sending a sharing message from the home node to the sharing node; reading an object copy from an object cache at the sharing node in response to the sharing message being received at the sharing node; wherein the object copy has the object identifier; sending a message to the action node with the object copy from the sharing node directly or through the home node; loading the object copy or the flash object into the object cache at the action node, as the object for use by the application program; and updating the sharing entry in the global cache directory at the home node to indicate that the action node stores the object copy in its object cache, wherein the flash object from flash memory at the home node is copied to the object cache at the action node by the SDF without the application program using the home-node name of the home node having the flash object; wherein the home node is selected from a plurality of nodes each storing flash objects, each node having a flash memory controlled by a local processor of the node, whereby objects are transparently fetched from flash memory at the home node. - View Dependent Claims (17, 18, 19, 20)
-
Specification