Configurable Output Buffer Ganging for Parallel Processor Threads

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing multi-threaded processor architectures face challenges in managing variable amounts of output data efficiently, leading to the need for a more area-efficient output buffer that can handle the maximum output data produced by parallel threads, which is often expensive due to the requirement for large on-chip buffers.

Innovation Solution

A controller is implemented to determine the necessary output buffer space per thread and the number of threads that can execute in parallel, ensuring that each thread writes to the buffer effectively, thereby optimizing the use of available buffer space by adjusting the number of threads and bank allocation based on the actual output data words produced.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a large on-chip buffer is provided to hold the maximum amount of output data from parallel threads, then all output data can be stored, but the buffer area becomes expensive and large

Engineering Contradiction:
Improveoutput data storage capabilityVSAvoidbuffer area
Core Design Contradiction:
ReliabilityVSArea of stationary object

Solution Approach 1:

The patent implements dynamic buffer allocation where the buffer size is adjusted based on the actual number of threads executing and the variable output data size per thread. Instead of allocating a fixed large buffer, the system dynamically determines the required buffer capacity at runtime, allowing the same physical buffer to accommodate different data volumes without requiring a permanently large buffer structure.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes the buffer allocation parameters dynamically based on thread count and output data characteristics. The controller monitors the actual number of active threads and adjusts buffer allocation accordingly, transforming the buffer from a static fixed-size structure to a dynamic parameter-adjustable structure that adapts to varying computational workloads.

Inventive Principle:
Principle #35Parameter changes

2Area of stationary object

If the output buffer is made area-efficient by reducing its size, then cost and area are reduced, but the buffer may not be large enough to hold maximum output data

Engineering Contradiction:
Improvebuffer areaVSAvoidoutput data storage capability
Core Design Contradiction:
Area of stationary objectVSReliability

Solution Approach 1:

The buffer allocation is made dynamic rather than static. The controller continuously monitors the actual number of threads executing and adjusts buffer allocation in real-time. This allows the system to use a smaller physical buffer while ensuring sufficient capacity is allocated based on actual workload requirements, eliminating the need for a permanently oversized buffer.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system performs preliminary determination of buffer requirements before thread execution begins. The controller calculates the expected output data size based on the number of threads and allocates appropriate buffer space in advance. This preliminary allocation ensures that when threads execute, the buffer is already sized appropriately, preventing overflow without requiring excessive buffer capacity.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If multiple threads execute in parallel to enhance throughput, then processing speed increases, but the output buffer space requirements increase proportionally

Engineering Contradiction:
ImprovethroughputVSAvoidbuffer area
Core Design Contradiction:
ProductivityVSArea of stationary object

Solution Approach 1:

The buffer allocation dynamically adapts to the number of parallel threads executing. When more threads are launched to increase throughput, the controller automatically adjusts buffer allocation to match the increased workload. This dynamic adjustment allows the system to maintain efficient buffer utilization across varying degrees of parallelism without requiring a fixed large buffer for maximum thread counts.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes buffer allocation parameters based on the actual number of active threads. As throughput requirements change with different thread counts, the buffer parameters (size, allocation per thread) are adjusted accordingly. This parameter adaptation allows the same physical buffer to support varying levels of parallelism efficiently.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS7747842B1Configurable output buffer ganging for a parallel processor
Publication Date: 2010.06.29 NVIDIA CORP
  • US7747842B1 patent drawing
  • US7747842B1 patent drawing
  • US7747842B1 patent drawing

AI summary

An output buffer in a multi-threaded processor is managed to store a variable amount of output data. Parallel threads produce a variable amount of output data. A controller is configured to determine how much output buffer space is needed per thread and how many threads can execute in parallel, given the available space in the output buffer. The controller also determines where each thread writes to in the output buffer.