Asynchronous Memory Allocation via Pool Segmentation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Synchronous memory allocation for stream-ordered computational operations introduces significant delays and causes memory fragmentation, leading to reduced system performance and increased memory usage.
Innovation Solution
Implementing asynchronous memory allocation and deallocation using a memory pool, where virtual memory pointers are provided initially, and backing memory is allocated and deallocated as needed, allowing for efficient reuse of memory without synchronization with the operating system.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If synchronous memory allocation is used for stream-ordered computational operations, then memory is allocated reliably, but significant delays are introduced and system performance is reduced
Solution Approach 1:
The patent implements preliminary action by pre-allocating memory from a memory pool before computational operations are executed. Virtual memory pointers are allocated asynchronously in advance, allowing the system to prepare memory resources ahead of time without blocking subsequent computational operations. This resolves the contradiction by maintaining allocation reliability through controlled pre-allocation while eliminating delays that would otherwise reduce system performance.
2Reliability
If synchronous memory allocation is used for stream-ordered computational operations, then memory is allocated with proper synchronization, but memory fragmentation increases and memory usage efficiency decreases
Solution Approach 1:
The patent applies segmentation by dividing the memory resource into a dedicated memory pool separated from the main system memory. This memory pool is managed independently with its own allocation and deallocation mechanisms, allowing stream-ordered operations to access memory without causing fragmentation in the broader memory space. The segmentation maintains synchronization reliability within the pool while improving overall memory usage efficiency.
Solution Approach 2:
The patent implements discarding and recovering by asynchronously deallocating memory back to the memory pool after computational operations complete. This allows memory to be recovered and reused within the pool without requiring synchronous operations or causing system-wide fragmentation. The mechanism maintains proper synchronization for the duration of use while significantly improving memory usage efficiency through rapid reuse.
3Productivity
If asynchronous memory allocation is implemented, then system performance is improved and delays are reduced, but memory management complexity increases
Solution Approach 1:
The patent introduces an intermediary memory pool manager that handles the complexity of asynchronous memory allocation and deallocation. This intermediary layer abstracts the complex asynchronous operations from the computational streams, providing a simplified interface where virtual memory pointers are allocated and freed without requiring complex synchronization logic in the main computational code. This resolves the contradiction by improving system performance through asynchronous operations while containing memory management complexity within a dedicated intermediary structure.
4Quantity of substance
If asynchronous memory deallocation is used, then memory is reused efficiently, but synchronization with the operating system is relaxed
Solution Approach 1:
The patent applies preliminary action to memory deallocation by preparing memory for reuse within the memory pool before the operating system's synchronous deallocation occurs. Virtual memory pointers are deallocated asynchronously and marked for reuse in advance, allowing memory to be efficiently reused without waiting for OS synchronization. This maintains memory reuse efficiency while the memory pool manager ensures proper synchronization is re-established when needed through controlled deallocation timing.
Data Source
AI summary
Apparatuses, systems, and techniques to allocate processor memory. In at least one embodiment, an application programming interface is used to execute instructions to asynchronously allocate memory locations to processors.


