Window Buffer Dependency Checking for 3D Graphics Pipelines

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, necessitating a method to check dependencies between data units.

Innovation Solution

A method and apparatus that utilize a window buffer and a window releaser to manage processing status updates, ensuring that data units are not accessed until they have been fully processed by a thread, preventing read-after-write hazards by using a window checker and arbiter to coordinate memory access requests and completion notifications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If threads execute in parallel without ordering control, then processing speed is improved, but read-after-write hazards occur causing data integrity issues

Engineering Contradiction:
Improveprocessing speedVSAvoiddata integrity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent introduces a window buffer as an intermediary data structure between the rasterizer and pixel shader threads. This buffer stores data units in raster order and provides ordered access interfaces, mediating between the parallel thread execution model and the sequential access requirements, thereby preventing read-after-write hazards while maintaining parallel processing benefits

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent implements preliminary ordering of data units in the window buffer before they are accessed by parallel threads. By pre-organizing data in raster order and using status flags to track processing states, the system ensures that dependent data units are ready in the correct order before threads attempt to access them, preventing hazards before they occur

Inventive Principle:
Principle #10Preliminary action

2Productivity

If threads access memory arbitrarily for parallel processing, then processing efficiency is improved, but dependency checking becomes complex

Engineering Contradiction:
Improveprocessing efficiencyVSAvoiddependency checking complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the data processing into distinct phases: data unit generation by rasterizer, buffered storage in window buffer, and threaded processing of individual data units. Each thread processes one data unit at a time with clearly defined access patterns, simplifying dependency tracking compared to arbitrary memory access while maintaining parallel efficiency

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements a feedback mechanism using status flags in the window buffer that track the processing state of each data unit. Threads query these flags to determine whether data units are ready for processing, and the buffer is updated with completion notifications, creating a feedback loop that simplifies dependency management through structured state tracking

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10134172B2Methods for checking dependencies of data units and apparatuses using the same
Publication Date: 2018.11.20 GLENFLY TECH CO LTD
  • US10134172B2 patent drawing
  • US10134172B2 patent drawing
  • US10134172B2 patent drawing

AI summary

A first request is received from a window checker, requesting to read cell data from a window buffer or write cell data into the window buffer, where the first request contains at least first cell index. A second request is received from a window releaser, requesting to read cell data from the window buffer or write cell data into the window buffer, where the second request contains at least second cell index. A register stores the first cell index, the second cell index, a first lock flag indicating whether the window checker has read cell data but hasn't written cell data back and a second lock flag indicating whether the window releaser has read cell data but hasn't written cell data back. One of the requests is granted according to the first and second cell indices and the first and second lock flags.