Virtual Address Masking for Memory Pool Identification
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Memory management in applications is inefficient due to the overhead of identifying memory blocks to be freed, which leads to performance degradation from cache misses and page faults, especially when blocks are no longer needed.
Innovation Solution
Divide memory into pools of identically sized blocks, using metadata stored in pointers to identify the original pool, allowing for efficient allocation and freeing of blocks without the need for memory dereferencing, leveraging virtual address masking capabilities.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If memory blocks are freed using traditional methods requiring memory dereferencing to identify the containing pool, then the system can accurately track and free memory blocks, but the performance degrades due to cache misses and page faults
Solution Approach 1:
The patent stores metadata about the memory pool containing each block directly in the pointer at the time of allocation. This preliminary action ensures that when the block needs to be freed, the pool identification information is already available in the pointer itself, eliminating the need for memory dereferencing and avoiding cache misses and page faults during the freeing operation.
Solution Approach 2:
The patent divides memory into multiple pools and uses virtual address masking to separate the pool identification metadata from the actual block address in the pointer. This segmentation allows the pointer to carry both the pool identifier (in masked-out address bits) and the block address simultaneously, enabling fast pool identification without additional memory accesses.
2Adaptability or versatility
If the full 64-bit address space is used for pointers, then the system can address the entire memory space, but application programs cannot store useful information in pointers since the full address space is rarely needed
Solution Approach 1:
The patent changes the interpretation of pointer parameters by using virtual address masking to identify which bits of the pointer represent the actual block address versus which bits represent pool identification metadata. This allows the same pointer structure to serve dual purposes: maintaining full 64-bit addressing capability while simultaneously encoding additional metadata about the memory pool, making the pointer more versatile without sacrificing addressing range.
Data Source
AI summary
A method for memory management may include dividing a memory into pools. Each pool includes blocks. The method may further include receiving a request to allocate a first block of a first size, selecting a pool based on the first size, allocating the first block from the selected pool, and creating metadata for a pointer to the first block. The pointer includes a pre-normalized address of the first block. The method may further include storing the metadata in the pointer, receiving a request to free the first block, and freeing the first block using the metadata to identify the selected pool.


