Memory Resource Allocation for SIMD Workgroups

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional shared memory allocation mechanisms in systems with multiple processing units can lead to processing deadlocks when tasks require contiguous memory blocks, resulting in latency and inefficiency due to fragmentation and interdependency between tasks.

Innovation Solution

A memory subsystem with a resource allocator that allocates contiguous blocks of memory to workgroups, reserving memory for all tasks within a workgroup and deallocating as soon as tasks complete, while also using fine and coarse status arrays to efficiently manage memory allocation and avoid fragmentation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If conventional shared memory allocation mechanisms are used to allow dynamic assignment of memory to tasks, then memory flexibility and adaptability are improved, but processing deadlocks occur due to fragmentation and interdependency between tasks

Engineering Contradiction:
Improvememory flexibilityVSAvoidprocessing deadlock
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The resource allocator performs preliminary action by allocating a contiguous block of memory portions to the entire workgroup before any tasks within the workgroup begin execution. This pre-allocation ensures that all tasks have their required memory resources available from the start, eliminating the possibility of deadlocks caused by interdependent memory allocation requests. The block is reserved exclusively for the workgroup, preventing other tasks from allocating memory that would be needed by subsequent tasks in the same workgroup.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If memory is allocated dynamically to individual tasks, then memory utilization efficiency is improved, but latency increases due to allocation delays and fragmentation

Engineering Contradiction:
Improvememory utilization efficiencyVSAvoidallocation latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The invention merges the memory allocation process for all tasks within a workgroup into a single operation. Instead of allocating memory to each task individually (which causes sequential delays and fragmentation), the resource allocator allocates a single contiguous block of memory portions to the entire workgroup at once. This combined allocation approach eliminates allocation latency for subsequent tasks and prevents fragmentation, as the entire block is reserved exclusively for the workgroup's use.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If contiguous memory blocks are allocated to tasks, then processing efficiency is improved, but memory fragmentation occurs reducing available contiguous space

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidmemory fragmentation
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The resource allocator performs preliminary action by allocating a sufficiently large contiguous block of memory portions to the workgroup before any tasks within the workgroup begin execution. This pre-allocation of a comprehensive contiguous block ensures that all tasks can access contiguous memory space without causing fragmentation. By reserving the entire block exclusively for the workgroup upfront, the system maintains contiguous memory availability while supporting efficient task processing.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20230297425A1Allocation of memory resources to SIMD workgroups
Publication Date: 2023.09.21 IMAGINATION TECH LTD
  • US20230297425A1 patent drawing
  • US20230297425A1 patent drawing
  • US20230297425A1 patent drawing

AI summary

A resource allocator receives a memory resource request for first memory resources in respect of a first-received task of a workgroup having a plurality of tasks. In response to receiving the memory resource request, the resource allocator allocates to the entire workgroup a block of memory portions of a shared memory that is sufficient in size for each task of the workgroup to receive memory resources in the block equivalent to the first memory resources.