Variable-Length Memory Block Layout for Fewer Access Requests
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for storing variable length data blocks in memory are inefficient, leading to increased memory access requests and difficulties in modifying data blocks, especially when the maximum size of the blocks exceeds the maximum accessible data size, resulting in suboptimal compression rates and increased computational resources.
Innovation Solution
The method involves grouping variable length data blocks into sets and allocating memory with a maximum accessible data unit section and a shared remainder section, where each block's first P non-overlapping portions are stored in the accessible section, and any remaining portions are stored in the shared remainder section, along with header information indicating each block's size.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If variable length data blocks are stored using traditional methods, then data can be stored in memory, but the number of memory access requests increases and memory utilization decreases
Solution Approach 1:
The patent segments variable length data blocks into fixed-size portions (e.g., 64-byte units) and stores them in an array structure. Each data block is divided into multiple portions that can be individually accessed, allowing efficient memory management without requiring variable-length allocation. This segmentation enables the system to handle variable-length logical data using fixed-length physical storage units.
Solution Approach 2:
The patent introduces a new dimension to memory organization by creating a multi-dimensional memory structure with dimensions for data blocks, portions within blocks, and offset positions. This dimensional approach allows the system to efficiently map variable-length data blocks onto fixed-size memory regions, reducing the number of memory access requests needed to retrieve or modify data.
2Adaptability or versatility
If variable length data blocks are stored with individual allocation, then each block can be accessed independently, but memory utilization decreases due to fragmentation
Solution Approach 1:
The patent merges multiple variable-length data blocks into a unified fixed-size memory region. By combining several blocks into a single continuous memory allocation, the system eliminates fragmentation and improves memory utilization. The unified structure allows efficient packing of data blocks while maintaining the ability to access individual blocks independently through calculated offsets.
3Length of moving object
If the maximum block size exceeds maximum accessible data size, then large data blocks can be stored, but multiple memory access requests are required increasing processing overhead
Solution Approach 1:
The patent segments large data blocks into smaller fixed-size portions that fit within the maximum accessible data size constraints. Each portion is stored contiguously in memory with known offsets, allowing the system to retrieve or modify portions using single memory access requests rather than multiple requests spanning the entire large block.
Solution Approach 2:
The patent performs preliminary organization of data blocks into fixed-size portions during the storage phase. By pre-calculating and storing the structure with known offsets and dimensions, the system eliminates the need for runtime calculations or multiple access requests when retrieving or modifying data, significantly reducing processing overhead.
Data Source
AI summary
A set of two or more variable length data blocks is stored in memory. Each variable length data block has a maximum size of N*B, wherein N is an integer greater than or equal to two, and B is a maximum data size that can be written to the memory using a single memory access request. For each variable length data block of the set, the first P non-overlapping portions of size B of the variable length data block are stored in a chunk of the memory allocated to that variable length data block, wherein P is a minimum of (i) a number of non-overlapping portions of size B of the variable length data block and (ii) X which is an integer less than N. Any remaining portions of the variable length data blocks are stored in a remainder section of the memory shared between the variable length data blocks of the set. Information indicating the size of each of the variable length data blocks in the set is stored in a header.


