# US 10,768,814 B2 · Distributed index for fault tolerant object memory fabric

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,768,814 B2
- Document ID: US10768814B2
- Status: Granted
- Kind: B2
- Application number: 15/946,918
- Filed: 2018-04-06
- Published: 2018-08-09
- Granted: 2020-09-08
- Earliest claimed: 2015-01-20
- Assignees: Ultrata, LLC
- Applicants: Ultrata, LLC
- Inventors: Steven J. Frank; Larry Reback
- Web page: https://patentgrep.com/patent/US10768814B2

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/064: {Management of blocks}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 12/0817: using directory methods
- G06F 12/0837: with software control, e.g. non-cacheable data
- G06F 12/0877: Cache access modes
- G06F 2212/2542: Non-uniform memory access [NUMA] architecture
- G06F 2212/6012: of operating mode, e.g. cache mode or local memory mode
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of the invention provide systems and methods for managing processing, memory, storage, network, and cloud computing to significantly improve the efficiency and performance of processing nodes. Embodiments can implement an object memory fabric including object memory modules storing memory objects created natively within the object memory module and may be a managed at a memory layer. The memory module object directory may index all memory objects within the object memory module. A hierarchy of object routers communicatively coupling the object memory modules may each include a router object directory that indexes all memory objects and portions contained in object memory modules below the object router in the hierarchy. The hierarchy of object routers may behave in aggregate as a single object directory communicatively coupled to all object memory modules and to process requests based on the router object directories.

## Claims

### Claim 1

An object memory fabric comprising:
a plurality of object memory modules, each object memory module comprising object storage storing one or more memory objects, memory object meta-data, and a memory module object directory, wherein:
each memory object and/or portion of memory objects is created natively within the object memory module and is a managed by the object memory module at a memory layer, and
the memory module object directory indexes all memory objects and/or portions of memory objects within the object memory module; and
a hierarchy of object routers communicatively coupling the plurality of object memory modules, wherein:
each object router of the hierarchy of object routers comprises a router object directory,
the router object directory indexes all memory objects and/or portions of memory objects contained in object memory modules below the object router along a line of descent in the hierarchy stemming from the object router
responsive to a request for an object, at least one of the object routers looks up the requested object with a respective router object directory,
in response to identifying a reference to the requested object in the respective router object directory, forwards the object toward a leaf in the hierarchy, and
in response to identifying the reference to the requested object is not in the respective router object directory, forwards the request toward a root in the hierarchy.

### Claim 2 (depends on 1)

The object memory fabric of claim 1, wherein the hierarchy of object routers operates according to a hierarchical tree network.

### Claim 3 (depends on 2)

The object memory fabric of claim 2, wherein the object memory modules below the object router along the line of descent in the hierarchy stemming from the object router comprises object memory modules directly communicatively coupled to the respective object router toward a leaf of the hierarchical tree network.

### Claim 4 (depends on 3)

The object memory fabric of claim 3, wherein toward the leaf of the hierarchical tree network corresponds to a most direct path between the object router away from a root of the hierarchical tree network and an object memory module at the leaf of the hierarchical tree network.

### Claim 5 (depends on 1)

The object memory fabric of claim 1, wherein the request is received from an application layer.

### Claim 6 (depends on 1)

The object memory fabric of claim 1, wherein the hierarchy of object routers adapted to behave in aggregate as the single object directory is used to manage at least one memory object across multiple object memory modules of the plurality of object memory modules where a single object memory module of the multiple object memory modules does not have storage space required to store all blocks of the at least one memory object.

### Claim 7

A hardware-based processing node comprising:
an object memory module comprising object storage storing one or more memory objects, memory object meta-data, and a memory module object directory, wherein:
the object memory module comprises a leaf node of a hierarchy of an object memory fabric,
each memory object and/or portion of memory objects is created natively within the object memory module and is a managed by the object memory module at a memory layer,
the memory module object directory indexes all memory objects and/or portions of memory objects within the object memory module,
the object memory module processes an object identifier corresponding to a request for an object, determines, based on the object identifier and the memory module object directory whether the requested object is an object stored by the object memory module, in response to determining the requested object is an object stored by the object memory module, generates a response to the first request based at least in part on the at least one object, and in response to determining the requested object is not an object stored by the object memory module, forwards the request for the object to a node above the object memory module in the hierarchy of the object memory fabric.

### Claim 8 (depends on 7)

The hardware-based processing node of claim 7, wherein:
the node above the object memory module in the hierarchy of the object memory fabric comprises an object router communicatively coupled to the object memory module;
the object router comprises a router object directory;
the router object directory indexes all memory objects and/or portions of memory objects contained in object memory modules below the object router along a line of descent in the hierarchy stemming from the object router;
the object router, responsive to receiving the request forwarded by the object memory module, looks up the requested object with a respective router object directory,
in response to identifying a reference to the requested object in the router object directory, the object router forwards the object toward an additional leaf node in the hierarchy, and
in response to identifying the reference to the requested object is not in the router object directory, forwards the request toward a root in the hierarchy.

### Claim 9 (depends on 8)

The hardware-based processing node of claim 8, wherein forwarding the request to the additional node is based at least in part on the object router determining a location of a memory object corresponding to the object identifier.

### Claim 10 (depends on 8)

The hardware-based processing node of claim 8, wherein:
forwarding the request to the additional node is based at least in part on the object router determining that a location of a memory object corresponding to the object identifier is unknown; and
the request is directed toward a root node.

### Claim 11 (depends on 8)

The hardware-based processing node of claim 8, after forwarding the request to the additional node, the memory module generates a response to the request based at least in part on a received response from the additional node.

### Claim 12 (depends on 7)

The hardware-based processing node of claim 7, wherein the request is received by the object memory module from an application layer.

### Claim 13 (depends on 7)

The hardware-based processing node of claim 7, wherein the request is received by the object memory module from one or more additional nodes.

### Claim 14 (depends on 7)

The hardware-based processing node of claim 7, wherein the node is configured to utilize a set of algorithms to operatively couple to one or more additional nodes to operate as a set of nodes independently of a scale of the set of nodes, wherein the set of nodes operates so that all memory objects of the set of nodes are accessible by any node of the set of nodes.

### Claim 15

A method for storing and managing one or more memory objects in an object memory fabric, the method comprising:
storing, by an object memory module, one or more memory objects, memory object meta-data, and a memory module object directory, wherein:
each memory object and/or portion of memory objects is created natively within the object memory module and is a managed by the object memory module at a memory layer, and
the memory module object directory indexes all memory objects and/or portions of memory objects within the object memory module;
indexing, by each object router of a hierarchy of object routers, in a router object directory of each router, all memory objects and/or portions of memory objects contained in object memory modules below the object router along a line of descent in a hierarchy stemming from the object router;
responsive to a request for an object, looking up, by at least one of the object routers, the requested object with a respective router object directory;
in response to identifying, by one of the object routers, a reference to the requested object in the respective router object directory, forwarding, by the one of the object routers, the object toward a leaf in the hierarchy; and
in response to identifying, by the at least one of the object routers, the reference to the requested object is not in any respective router object directory, forwarding, by one of the object routers, the request toward a root in the hierarchy.

### Claim 16 (depends on 15)

The method of claim 15, wherein the hierarchy of object routers operates according to a hierarchical tree network.

### Claim 17 (depends on 16)

The method of claim 16, wherein the object memory modules below the object router along the line of descent in the hierarchy stemming from the object router comprises object memory modules directly communicatively coupled to the respective object router toward a leaf of the hierarchical tree network.

### Claim 18 (depends on 17)

The method of claim 17, wherein toward the leaf of the hierarchical tree network corresponds to a most direct path between the object router away from a root of the hierarchical tree network and an object memory module at the leaf of the hierarchical tree network.
