Shared fabric attached memory allocator
First Claim
1. A system, comprising:
- a plurality of processing nodes configured to execute one or more processes, each processing node comprising a processor, a local memory, and a fabric bridge;
a switching fabric comprising a plurality of fabric switch instances, each fabric switch instance coupled to at least one of the plurality of processing nodes via the fabric bridge of the at least one of the plurality of processing nodes;
a fabric-attached memory (FAM) comprising a plurality of memory instances, each memory instance of the FAM being directly coupled to a fabric switch instance of the switching fabric and each fabric switch instance being coupled with at least one other fabric switch instance of the switching fabric;
wherein each memory instance of the FAM is shared by each of the processing nodes such that each memory block within every memory instance, independent of whether the memory block has been previously accessed, allocated or released by a different processing node of the plurality of processing nodes, may be accessed, allocated, and released by each processing node of the plurality of processing nodes;
a memory allocator to allocate and release one or more memory blocks in the FAM in response to memory allocation requests and memory release requests from the one or more processes executed by one or more of the processing nodes,the memory allocator to partition the FAM into a memory shelf comprising a plurality of memory books of equal size,the memory allocator to map a shelf into a virtual memory zone, the zone aligned with boundaries of one or more books,the memory allocator to maintain an indexed free-memory list having a plurality of index levels, where each index level is an entry point to a list of free memory blocks of a particular size in the zone, andthe memory allocator to maintain a bitmap of the zone to identify if a memory block of a particular size is allocated.
1 Assignment
0 Petitions
Accused Products
Abstract
An example system comprises one or more processing nodes to execute one or more processes; a switching fabric coupled to the one or more processing nodes; a fabric-attached memory (FAM) coupled with the switching fabric; and a memory allocator to allocate and release memory in the FAM in response to memory allocation requests and memory release requests from the one or more processes. The memory allocator is to partition the FAM into a memory shelf comprising a plurality of memory books of equal size. The memory allocator is to map a shelf into a virtual memory zone, the zone aligned with the boundaries of one or more books. The memory allocator is to maintain an indexed free-memory list where each index level is an entry point to a list of free memory blocks of a particular size in the zone, and the memory allocator to maintain a bitmap of the zone to identify if a memory block of a particular size is allocated.
-
Citations
15 Claims
-
1. A system, comprising:
-
a plurality of processing nodes configured to execute one or more processes, each processing node comprising a processor, a local memory, and a fabric bridge; a switching fabric comprising a plurality of fabric switch instances, each fabric switch instance coupled to at least one of the plurality of processing nodes via the fabric bridge of the at least one of the plurality of processing nodes; a fabric-attached memory (FAM) comprising a plurality of memory instances, each memory instance of the FAM being directly coupled to a fabric switch instance of the switching fabric and each fabric switch instance being coupled with at least one other fabric switch instance of the switching fabric; wherein each memory instance of the FAM is shared by each of the processing nodes such that each memory block within every memory instance, independent of whether the memory block has been previously accessed, allocated or released by a different processing node of the plurality of processing nodes, may be accessed, allocated, and released by each processing node of the plurality of processing nodes; a memory allocator to allocate and release one or more memory blocks in the FAM in response to memory allocation requests and memory release requests from the one or more processes executed by one or more of the processing nodes, the memory allocator to partition the FAM into a memory shelf comprising a plurality of memory books of equal size, the memory allocator to map a shelf into a virtual memory zone, the zone aligned with boundaries of one or more books, the memory allocator to maintain an indexed free-memory list having a plurality of index levels, where each index level is an entry point to a list of free memory blocks of a particular size in the zone, and the memory allocator to maintain a bitmap of the zone to identify if a memory block of a particular size is allocated. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, comprising:
-
partitioning a shared fabric attached memory (FAM) into a memory shelf comprising a plurality of memory books of equal size, wherein the shared FAM comprises a plurality of memory instances shared between a plurality of processing nodes such that each memory block within every memory instance, independent of whether the memory block has been previously accessed, allocated or released by a different processing node of the plurality of processing nodes, may be accessed, allocated, and released by each processing node of the plurality of processing nodes;
wherein each processing node comprises a processor, a local memory, and a fabric bridge, wherein the processing node is coupled to a switching fabric;
wherein the switching fabric comprises a plurality of fabric switch instances, each fabric switch instance coupled to at least one of the plurality of processing nodes via the fabric bridge of the at least one of the plurality of processing nodes; and
wherein each of memory instance of the FAM is directly coupled to a fabric switch instance of the switching fabric and each fabric switch instance is coupled with at least one other fabric switch instance of the switching fabric;mapping a shelf into a virtual memory zone, the zone aligned with boundaries of one or more books; maintaining an indexed free-memory list having a plurality of index levels where each index level is an entry point to a list of free memory blocks of a particular size in the zone; and maintaining a bitmap of the zone to identify if a memory block of a particular size is free or allocated. - View Dependent Claims (9, 10, 11)
-
-
12. A non-transitory computer-readable storage medium encoded with instructions executable by a processor of a computing system, the computer-readable storage medium comprising instructions to:
-
partition a shared fabric attached memory (FAM) coupled to the processor into a memory shelf comprising a plurality of memory books of equal size, wherein the shared FAM comprises a plurality of memory instances shared between a plurality of processing nodes such that each memory block within every memory instance, independent of whether the memory block has been previously accessed, allocated or released by a different processing node of the plurality of processing nodes, may be accessed, allocated, and released by each processing node of the plurality of processing nodes;
wherein each processing node comprises a processor, a local memory, and a fabric bridge, wherein the processing node is coupled to a switching fabric;
wherein the switching fabric comprises a plurality of fabric switch instances, each fabric switch instance coupled to at least one of the plurality of processing nodes via the fabric bridge of the at least one of the plurality of processing nodes; and
wherein each of memory instance of the FAM is directly coupled to a fabric switch instance of the switching fabric and each fabric switch instance is coupled with at least one other fabric switch instance of the switching fabric;map a shelf into a virtual memory zone, maintain an indexed free-memory list having a plurality of index levels where each index level is an entry point to a list of free memory blocks of a particular size in the zone; and maintain a bitmap of the zone to identify if a memory block of a particular size is free or allocated. - View Dependent Claims (13, 14, 15)
-
Specification