Variable-Size Buffer Allocation for Memory Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory allocation approaches suffer from inefficiencies, including pre-specified allocation sizes that can be larger than needed, leading to suboptimal efficiency, long latency, and low throughput in accessing memory, particularly due to the lack of on-demand allocation and contiguous address management.

Innovation Solution

A novel buffer memory allocation scheme that separates handle allocation from memory block commitment, allowing for variable-size allocation without pre-specification, ensuring deterministic results, fast allocation, high-throughput access, and bounded latency, using a Buffer Allocator and Memory Management (BAM) mechanism that manages on-chip and off-chip memory with a unified API, hiding physical organization from clients and enabling contiguous address handling across non-contiguous physical memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If pre-specified allocation size is used for memory portions, then allocation simplicity is maintained, but memory efficiency deteriorates due to over-allocation

Engineering Contradiction:
Improveallocation simplicityVSAvoidmemory efficiency
Core Design Contradiction:
Ease of manufactureVSLoss of energy

Solution Approach 1:

The patent implements dynamic buffer allocation where the buffer size is not fixed in advance but adapts to the actual data needs. The buffer manager dynamically adjusts the allocation size based on the specific requirements of each data transfer operation, allowing the system to optimize memory usage for each individual case rather than using a static pre-specified size for all operations.

Inventive Principle:
Principle #15Dynamics

2Productivity

If buffer allocation is not on-demand, then allocation overhead is reduced, but access latency increases and throughput decreases

Engineering Contradiction:
Improveallocation throughputVSAvoidaccess latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements a buffer pooling mechanism where buffers are pre-allocated and maintained in an available pool. When a data transfer operation needs a buffer, it can immediately take one from the pool without waiting for allocation or initialization, thus eliminating allocation latency while maintaining the ability to serve multiple operations concurrently.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If physical memory organization is exposed to clients, then address mapping is simplified, but memory management flexibility deteriorates

Engineering Contradiction:
Improveaddress mapping simplicityVSAvoidmemory management flexibility
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The patent introduces a buffer manager as an intermediary layer between clients and physical memory. This buffer manager handles the complex address mapping and physical organization details internally, while presenting a simplified interface to clients. The buffer manager translates client requests into appropriate physical memory operations, thus shielding clients from complexity while maintaining flexibility in memory management.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10303375B2Buffer allocation and memory management
Publication Date: 2019.05.28 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10303375B2 patent drawing
  • US10303375B2 patent drawing
  • US10303375B2 patent drawing

AI summary

Methods and apparatus for buffer allocation and memory management are described. A plurality of buffers of a memory may be allocated, by a memory controller, with the buffers having variable sizes. The memory controller may maintain a mapping table that associates each of a plurality of access keys to a respective one of a plurality of page addresses of a plurality of pages of the memory. Each of the buffers may respectively include one or more contiguous pages of the plurality of pages of the memory. Each page of the plurality of pages may include one or more blocks of the memory.