Centralized Memory Allocator for Device Stream Buffers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current memory management for multiple device streams in computing devices is inefficient, as it lacks effective memory sharing and allocation strategies, leading to complex memory handling and increased memory footprint.

Innovation Solution

A centralized memory allocator is introduced, allowing multiple components to request and manage buffers through a stream server, enabling dynamic allocation, data modification, and efficient memory sharing across components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If each component independently manages its own memory buffers, then each component has full control over its memory resources, but the overall memory footprint increases and memory sharing becomes inefficient

Engineering Contradiction:
Improvecomponent controlVSAvoidmemory footprint
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent merges individual component memory management into a centralized stream server memory management system. The stream server consolidates buffer allocation for multiple components (camera, microphone, GPS, etc.) into a unified memory pool, allowing efficient sharing and reducing total memory consumption while maintaining component-specific access control through handles and permissions.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The stream server implements a universal memory management interface that serves multiple components simultaneously. A single buffer allocation mechanism handles diverse input devices (camera, microphone, GPS, accelerometer) with different data types and requirements, making the memory system multi-functional rather than dedicated to each component.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Adaptability or versatility

If multiple components request memory allocations independently, then each component can obtain necessary buffers, but the memory management complexity increases

Engineering Contradiction:
Improvebuffer allocationVSAvoidmemory management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The stream server acts as an intermediary between components and the operating system kernel. It receives buffer allocation requests from multiple components, manages the actual memory allocations through a unified interface, and handles deallocation centrally. This mediator pattern simplifies component code while the stream server handles the complexity of coordinated memory management.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system implements feedback mechanisms where the stream server monitors memory usage across all components and dynamically adjusts buffer allocations. When memory pressure is detected or components are deallocated, the server reallocates buffers efficiently, providing adaptive memory management that responds to system conditions.

Inventive Principle:
Principle #23Feedback

3Productivity

If components manage their own memory deallocation, then each component can release unused buffers, but memory sharing and reallocation efficiency decreases

Engineering Contradiction:
Improvememory deallocationVSAvoidmemory sharing
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The stream server maintains continuous memory management oversight, ensuring that when one component deallocates buffers, the memory is immediately available for reallocation to other components without interruption. This continuous management enables seamless memory sharing and prevents idle memory gaps, maximizing utilization across all input devices.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS10437601B2Centralized memory management for multiple device streams
Publication Date: 2019.10.08 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10437601B2 patent drawing
  • US10437601B2 patent drawing
  • US10437601B2 patent drawing

AI summary

Described are examples for allocating buffers for multiple components. A stream server can provide an interface to a centralized memory allocator for allocating at least one buffer in a memory to each of the multiple components. The stream server can initialize an instance of the centralized memory allocator based at least in part on a request received from a component of the multiple components via the interface. The stream server can allocate, via the instance of the centralized memory allocator, the at least one buffer for the component in the memory. The stream server can receive, via the instance of the centralized memory allocator, data for storing in the at least one buffer. The stream server can modify the data to generate modified data stored in the at least one buffer.