Memory Allocation Method for Multi-Processor Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In multi-processor systems with limited memory allocation, existing memory allocation algorithms are inefficient due to the need for sophisticated algorithms that require significant overhead, leading to waste and inefficiencies when handling small data segments, especially with traditional sixteen byte alignment methods that use headers for tracking allocations.
Innovation Solution
A method that allows for non-standard memory allocations by locating unallocated memory addresses based on multiples of the requested data size, eliminating the need for headers and aligning bytes on address boundaries, thereby enabling more efficient storage and retrieval of small data segments without the overhead of traditional systems.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Manufacturing precision
If traditional sixteen byte alignment methods with headers are used for memory allocation, then data can be stored with proper alignment, but memory overhead increases and storage density decreases
Solution Approach 1:
The patent extracts and eliminates the header component from traditional memory allocation structures. By removing the header that traditionally precedes each allocated block, the system achieves headerless allocation where data can be stored immediately at the allocated address without any overhead structure, directly reducing memory overhead while maintaining alignment through alternative tracking mechanisms
Solution Approach 2:
The patent changes the alignment parameter from fixed sixteen-byte alignment to flexible alignment based on data size multiples. Instead of forcing all allocations to sixteen-byte boundaries with headers, the system allocates memory in multiples of the actual data size (1-byte, 2-byte, 4-byte, 8-byte alignments), optimizing both alignment precision and memory utilization
2Adaptability or versatility
If sophisticated memory allocation algorithms are used, then memory can be managed dynamically, but the overhead becomes too large for small processing units with limited memory
Solution Approach 1:
The patent segments the memory management approach into size-based categories (1-byte, 2-byte, 4-byte, 8-byte, 16-byte alignments). By dividing memory allocation into discrete size segments rather than using a single complex algorithm for all allocations, the system achieves dynamic management capability while keeping each segment's handling simple and overhead minimal
Solution Approach 2:
The patent applies partial action by implementing only the essential memory allocation functionality needed for small processing units. Rather than implementing a full-featured sophisticated allocation algorithm, the system uses a streamlined approach that handles the core allocation needs with minimal overhead, sacrificing some advanced features to reduce complexity
3Ease of manufacture
If fixed sixteen byte allocation blocks are used, then memory allocation is simple, but small data segments waste significant memory space
Solution Approach 1:
The patent introduces dynamics into the allocation system by making the allocation block size variable based on the data being stored. Instead of fixed sixteen-byte blocks, the system dynamically selects allocation sizes (1, 2, 4, 8, or 16 bytes) matching the actual data size, enabling both simplicity and efficiency by adapting to each allocation request
Solution Approach 2:
The patent applies local quality by optimizing each memory allocation according to its specific data size requirements. Rather than applying a uniform allocation strategy throughout memory, the system tailors the allocation size locally to match each data segment, ensuring that each byte allocated serves a specific purpose without waste
Data Source
Figure 1
Figure 2
Figure 3
AI summary
In one embodiment a method is disclosed for allocating memory for a processor unit in a group of processing units. The method can include receiving a memory allocation request where the request can indicate a number of binary segments to be stored. The method can determine if the number indicates a nonstandard allocation, and locate an unallocated memoryaddress based on a multiple of the number if the number indicates a nonstandard allocation. The method can also include locating an unallocated memory address from a poolofmemoryaddresses, where the poolofaddresses includes the integer multiples of the binarysegments and excludes addresses that are two times the number of binary segments such that the address can be utilized to determine the allocation.