Distributed Tiled Caching for Graphics Subsystems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Maintaining application-programming-interface (API) order in highly parallel tiling architectures for three-dimensional graphics processing is challenging due to the complexity of processing entities and the need to ensure proper ordering of primitives in screen-space pipelines.

Innovation Solution

A graphics subsystem with distributed tiled caching, comprising world-space and screen-space pipelines, tiling units, and a crossbar unit, where tiling units generate cache tile batches and transmit them to screen-space pipelines, ensuring primitives are processed in API order and cache tile order, reducing memory bandwidth consumption and improving cache memory utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If primitives are processed in API order in a highly parallel tiling architecture, then the correctness of rendering results is maintained, but the complexity of coordinating multiple processing entities increases

Engineering Contradiction:
Improvecorrectness of rendering resultsVSAvoidcomplexity of coordinating multiple processing entities
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The screen space is divided into multiple independent tiles, with each tile processed by a dedicated processing entity. This segmentation allows parallel processing while maintaining API order within each tile, reducing the coordination complexity across the entire screen while ensuring rendering correctness.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A tile cache is introduced as an intermediary buffer between the rendering pipeline and memory. The tile cache stores processed tile data and manages the ordering of primitives across multiple processing entities, acting as a mediator that ensures API order is maintained without requiring complex direct coordination between all processing entities.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If multiple processing entities implement different instances of world-space and screen-space pipelines, then processing throughput is improved, but maintaining proper API order becomes more difficult

Engineering Contradiction:
Improveprocessing throughputVSAvoiddifficulty of maintaining API order
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The rendering workload is segmented into independent tile batches that can be processed in parallel by multiple processing entities. Each entity maintains API order within its assigned tiles, enabling high throughput while avoiding the complexity of coordinating API order across the entire screen among all entities.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Primitives are pre-sorted and organized into tile batches before being distributed to multiple processing entities. This preliminary organization ensures that each entity receives primitives in the correct order for its assigned tiles, maintaining API order without requiring complex runtime coordination between entities.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If work is rearranged to be processed in tile order, then cache memory utilization is improved, but the ability to maintain API order in the screen-space pipeline is compromised

Engineering Contradiction:
Improvecache memory utilizationVSAvoidAPI order maintenance
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The tile cache serves as an intermediary structure that holds tile batches in memory. It enables the screen-space pipeline to process tiles in cache-friendly order while maintaining API order within each tile through proper buffering and ordering mechanisms, thus improving cache utilization without sacrificing rendering correctness.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The processing order is changed from a single-dimensional API order sequence to a two-dimensional tile-based organization. Tiles are arranged in cache-friendly patterns in memory, while the primitives within each tile maintain their API order, effectively adding a spatial dimension to the processing organization that improves cache utilization.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS10032243B2Distributed tiled caching
Publication Date: 2018.07.24 NVIDIA CORP
  • US10032243B2 patent drawing
  • US10032243B2 patent drawing
  • US10032243B2 patent drawing

AI summary

One embodiment of the present invention sets forth a graphics subsystem configured to implement distributed cache tiling. The graphics subsystem includes one or more world-space pipelines, one or more screen-space pipelines, one or more tiling units, and a crossbar unit. Each world-space pipeline is implemented in a different processing entity and is coupled to a different tiling unit. Each screen-space pipeline is implemented in a different processing entity and is coupled to the crossbar unit. The tiling units are configured to receive primitives from the world-space pipelines, generate cache tile batches based on the primitives, and transmit the primitives to the screen-space pipelines. One advantage of the disclosed approach is that primitives are processed in application-programming-interface order in a highly parallel tiling architecture. Another advantage is that primitives are processed in cache tile order, which reduces memory bandwidth consumption and improves cache memory utilization.