System for using always in-memory data structures in a heterogeneous memory pool
AssigneeLemon Inc.
InventorsViacheslav Dubeyko, Jian Wang
Life of this patent
Estimating the term…
Abstract
A storage system includes a host device and a heterogeneous memory pool. The host device includes an application and a memory allocator stored thereon. The heterogeneous memory pool includes a volatile or non-volatile memory component, a persistent memory component, and a computational component. The computational component is in communication with the persistent memory component and the volatile or non-volatile memory component. The host device is in communication with the heterogeneous memory pool, via the memory allocator, to offload computations from the host device to the heterogenous memory pool.
Claims20
A storage system comprising:
- a host device comprising an application and a memory allocator stored thereon;
- and
- a heterogenous memory pool comprising at least one of a volatile or non-volatile memory component, a persistent memory component, and a computational component, the computational component being in communication with the persistent memory component and the at least one of the volatile or non-volatile memory component, the at least one of the volatile or non-volatile memory component being different from the persistent memory component, the at least one of the volatile or non-volatile memory component including dynamic random access memory (DRAM) or non-volatile random access memory (NVRAM);
- wherein the host device is in communication with the heterogenous memory pool, via the memory allocator, to offload computations from the host device to the heterogenous memory pool,
- wherein the application generates a request to access one or more streams each comprising a memory address range for allocating persistent memory of the persistent memory component, and writes the request into a request queue stored in the dynamic random access memory (DRAM) or the non-volatile random access memory (NVRAM), the request queue being mapped to the one or more streams, and
- wherein the computational component extracts the request from the at least one of the volatile or non-volatile memory component and processes the request on the persistent memory of the persistent memory component.
A method of allocating persistent memory, the method comprising:
- preparing, at an application of a first device, a request to access one or more streams each comprising a memory address range for allocating persistent memory of a second device;
- writing the request into a request queue stored in dynamic random access memory (DRAM) or non-volatile random access memory (NVRAM) of at least one of a volatile or non-volatile memory component of the second device, the request queue being mapped to the one or more streams, the at least one of the volatile or non-volatile memory component being different from the persistent memory of the second device;
- extracting the request, via a computational component of the second device, from the at least one of a volatile or non-volatile memory component of the second device;
- processing the request, via the computational component, on the persistent memory of the second device;
- preparing a status of the processed request on the persistent memory of the second device;
- and
- reading the status of the processed request, via the application.
A storage system comprising:
- a first device comprising a computational component;
- a second device comprising a computational component;
- and
- memory storing instructions that, when executed by the computational component of at least one of the first device or the second device, causes the system to perform a set of operation, the set of operations comprising:
- preparing, at an application of the first device, a request to access one or more streams each comprising a memory address range for allocating persistent memory of the second device;
- writing the request into a request queue stored in dynamic random access memory (DRAM) or non-volatile random access memory (NVRAM) of at least one of a volatile or non-volatile memory component of the second device, the request queue being mapped to the one or more streams, the at least one of the volatile or non-volatile memory component being different from the persistent memory of the second device;
- extracting the request, via the computational component of the second device, from the at least one of the volatile or non-volatile memory component of the second device;
- processing the request, via the computational component of the second device, on the persistent memory of the second device;
- preparing a status of the processed request on the persistent memory of the second device;
- and
- reading the status of the processed request, via the application.
Dependencies are inferred from the claim text.