Window Buffer Dependency Checking for 3D Graphics Pipeline Hazards

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In 3D graphics pipelines, read-after-write hazards occur due to out-of-order execution of threads in the pixel shader, which can lead to incorrect access of data units in DRAM, necessitating a method to check dependencies between data units.

Innovation Solution

A method and apparatus that utilize a window buffer and window checker to determine the processing status of data units, performing rejection or acknowledgement procedures to ensure proper access to attribute values in DRAM, preventing read-after-write hazards by managing memory access requests from threads.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If threads execute in parallel with arbitrary memory access, then productivity is improved, but read-after-write hazards occur causing reliability to deteriorate

Engineering Contradiction:
Improveparallel execution speedVSAvoiddata access correctness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

A window buffer is introduced as an intermediary data structure between threads and DRAM to track the processing status of each data unit. The window buffer stores status information (processed/not processed) for each data unit, allowing the system to mediate between parallel thread execution and correct data access ordering, thereby preventing read-after-write hazards while maintaining parallel productivity

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system implements feedback by continuously monitoring the processing status of data units through the window buffer and using this information to dynamically control thread access to DRAM. When a thread requests access to a data unit, the system checks the window buffer for its processing status and provides feedback by either granting or rejecting the access request, ensuring data correctness while allowing parallel execution

Inventive Principle:
Principle #23Feedback

2Ease of operation

If threads access memory arbitrarily, then ease of operation is improved, but data integrity deteriorates due to read-after-write hazards

Engineering Contradiction:
Improvememory access flexibilityVSAvoiddata integrity
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The window buffer acts as an intermediary that sits between threads and DRAM, tracking the processing status of each data unit. This intermediary maintains data integrity by preventing threads from reading data units that are still being processed by other threads, while still allowing flexible parallel access to data units that are safe to read, thus preserving both ease of operation and data integrity

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If a window buffer and window checker are added to check dependencies, then reliability is improved, but device complexity increases

Engineering Contradiction:
Improvedependency checking accuracyVSAvoidhardware structure complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The dependency checking function is segmented into two distinct components: a window buffer that stores processing status information for each data unit, and a window checker that queries this buffer to make access decisions. This segmentation allows the system to achieve reliable dependency checking through a simple, modular structure rather than a complex monolithic design, improving reliability while keeping device complexity manageable through functional decomposition

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9892484B2Methods for checking dependencies of data units and apparatuses using the same
Publication Date: 2018.02.13 GLENFLY TECH CO LTD
  • US9892484B2 patent drawing
  • US9892484B2 patent drawing
  • US9892484B2 patent drawing

AI summary

A memory access request associated with a data unit is received from a first thread of a pixel shader. A processing status associated with the data unit is obtained from a window buffer. It is determined whether the data unit is being processed by a second thread. If so, a rejection procedure is performed to avoid the first thread gaining to access an attribute value associated with the data unit from/to a DRAM (Dynamic Random Access Memory). Otherwise, an acknowledgement procedure is performed to grant the first thread to access the attribute value associated with the data unit from/to the DRAM.