Dynamic Off-Chip Memory Allocation for Unified Shader Parallelism

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional multithreaded processing systems face challenges in efficiently allocating memory for multiple threads, leading to increased costs and reduced processing performance due to the need for large off-chip memory and limited parallel processing capabilities.

Innovation Solution

The system dynamically allocates fixed-size portions of memory from a memory pool to each processing thread, allowing for greater thread parallelism without requiring a large memory pool, and enables sharing or division of the memory pool among thread types based on their memory needs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a large amount of off-chip memory is allocated to accommodate the greatest amount of memory needed by any thread, then all threads can be processed in parallel, but the cost of producing the processing system increases

Engineering Contradiction:
Improvethread parallelismVSAvoidoff-chip memory
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent implements dynamic memory allocation where the memory pool is divided into allocation units that are dynamically assigned to threads based on their needs. The head pointer and tail pointer mechanism enables flexible allocation and deallocation of memory units as threads are created and completed, allowing the system to adapt memory distribution in real-time rather than statically allocating fixed memory to each thread

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent merges multiple thread memory requirements into a single shared memory pool. Instead of allocating separate memory spaces for each thread, the system combines all thread memory needs into one pool that is dynamically partitioned among active threads, reducing total memory requirements while maintaining parallel processing capability

Inventive Principle:
Principle #5Merging (Combining)

2Quantity of substance

If the amount of off-chip memory is limited to reduce cost, then the number of threads that can be processed in parallel is reduced by disabling thread processors, but the processing performance is reduced

Engineering Contradiction:
Improveoff-chip memoryVSAvoidthread parallelism
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The system dynamically adjusts memory allocation based on the number and type of active threads. By using a shared memory pool with dynamic allocation units, the system can support more threads in parallel than would be possible with static allocation, improving productivity without proportionally increasing memory quantity

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the memory allocation parameter from fixed per-thread allocation to dynamic pool-based allocation. This parameter change allows the system to optimize memory usage by allocating smaller units to threads that need less memory and reserving larger units for threads with higher memory requirements, thereby supporting greater thread parallelism within limited memory constraints

Inventive Principle:
Principle #35Parameter changes

3Adaptability or versatility

If a single fixed size portion of memory is allocated to each thread based on the largest amount needed by any thread, then all thread types can be accommodated, but memory usage is inefficient for threads with smaller memory needs

Engineering Contradiction:
Improvethread type accommodationVSAvoidmemory usage efficiency
Core Design Contradiction:
Adaptability or versatilityVSLoss of energy

Solution Approach 1:

The patent applies local quality by allowing different allocation unit sizes within the same memory pool based on the specific needs of different thread types. Rather than uniform allocation, the system can allocate larger units to vertex shaders and smaller units to pixel shaders, optimizing memory usage for each thread type's specific requirements while maintaining adaptability across all thread types

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The dynamic allocation mechanism allows the memory pool to adapt to different thread types by allocating appropriate-sized units from the pool. When a thread is created, the system determines its memory requirements and allocates an appropriate unit from the pool, ensuring both adaptability to different thread types and efficient memory utilization

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7739473B1Off-chip memory allocation for a unified shader
Publication Date: 2010.06.15 NVIDIA CORP
  • US7739473B1 patent drawing
  • US7739473B1 patent drawing
  • US7739473B1 patent drawing

AI summary

Systems and methods for dynamically allocating memory for thread processing may reduce memory requirements while maintaining thread processing parallelism. A memory pool is allocated to store data for processing multiple threads that does not need to be large enough to dedicate a fixed size portion of the memory pool to each thread that may be processed in parallel. Fixed size portions of the memory pool are dynamically allocated and deallocated to each processing thread. Different fixed size portions may be used for different types of threads to allow greater thread parallelism compared with a system that requires allocating a single fixed portion of the memory pool to each thread. The memory pool may be shared between all of the thread types or divided to provide separate memory pools dedicated to each particular thread type.