Memory Resource Allocation for SIMD Workgroups
Find Innovative SolutionsGenerate 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
Engineering 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
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.
2Productivity
If memory is allocated dynamically to individual tasks, then memory utilization efficiency is improved, but latency increases due to allocation delays and fragmentation
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.
3Productivity
If contiguous memory blocks are allocated to tasks, then processing efficiency is improved, but memory fragmentation occurs reducing available contiguous space
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.
Data Source
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.


