Pooled Circular Buffers for Spatial Compute Memory Constraints

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Spatial compute architectures have limited local memory, which can impact runtime performance due to the significant data consumption and production requirements of applications, and existing memory management techniques lead to inefficient use of memory resources.

Innovation Solution

Implementing dynamically pooled allocations of memory buffers, specifically using a pooled synchronized circular buffer, which reduces memory footprint by combining multiple buffers into a shared memory pool based on access patterns and execution times of producer and consumer processes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If separate synchronized circular buffers are allocated for each producer-consumer pair, then synchronization between producers and consumers is ensured, but memory footprint increases significantly

Engineering Contradiction:
Improvesynchronization reliabilityVSAvoidmemory footprint
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Multiple separate synchronized circular buffers allocated for different producer-consumer pairs are merged into a single pooled synchronized circular buffer. The pool manager dynamically allocates and deallocates buffer segments within the pooled buffer for different producer-consumer pairs, reducing total memory footprint while maintaining synchronization guarantees through enforced access sequences and ownership tracking.

Inventive Principle:
Principle #5Merging (Combining)

2Device complexity

If static memory allocation is used for local data memory, then memory management is simplified, but runtime performance degrades due to insufficient memory for significant data consumption and production

Engineering Contradiction:
Improvememory management complexityVSAvoidruntime performance
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The system transitions from static memory allocation to dynamic memory allocation through a pool manager that operates at runtime. The pool manager dynamically allocates buffer segments to producer-consumer pairs based on actual memory needs and usage patterns, enabling the system to adapt to varying data consumption and production requirements while maintaining manageable complexity through automated allocation policies.

Inventive Principle:
Principle #15Dynamics

3Reliability

If multiple separate buffers are used for different producer-consumer pairs, then each pair has dedicated memory resources, but memory utilization efficiency decreases

Engineering Contradiction:
Improvededicated resource guaranteeVSAvoidmemory utilization efficiency
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The pooled buffer system enables dynamic recovery and reuse of memory segments. When a producer-consumer pair finishes using a buffer segment, the pool manager recovers the segment and makes it available for allocation to other producer-consumer pairs. This continuous cycle of allocation, usage, recovery, and reallocation ensures high memory utilization efficiency while maintaining dedicated resource guarantees through controlled access sequences.

Inventive Principle:
Principle #34Discarding and recovering

Data Source

PatentUS20260003587A1Dynamically pooled allocations of memory buffers on spatial compute architectures
Publication Date: 2026.01.01 XILINX INC
  • US20260003587A1 patent drawing
  • US20260003587A1 patent drawing
  • US20260003587A1 patent drawing

AI summary

Dynamically pooled allocation of memory buffer on spatial compute architectures, including analyzing, at compile-time, access patterns (e.g., cyclo-static execution/firing rules) of consumer and/or producer processes that have shared access to local memory of one or more compute tiles, and identifying situations in which multiple buffers can be replaced with a pooled buffer having a memory footprint that is less than a sum of the memory footprints of the multiple buffers. A compiler may identify instances of mutual exclusiveness in the execution patterns of the processes, differences in execution times between compute kernels of the processes, and/or variations in execution times of the kernels. The compiler may generate controller code and/or configuration parameters to enforce memory allocation/mapping at application run-time.