JIT Compiler Runtime Constant Binding for Parallel Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional parallel processors have a limited number of constant banks, restricting the number of constant values they can store and leading to partial compliance with industry-standard APIs, such as Tier 3 of the DX12 API, which is essential for multithreaded applications.

Innovation Solution

A just-in-time (JIT) compiler is used to bind constants at runtime by determining a chain of pointers from a root table to a uniform register, allowing each thread to access a larger number of constant values beyond the storage capacity of dedicated constant banks, ensuring full compliance with industry-standard APIs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If conventional constant banks are used to store constant values, then the processor has simple and fast access to constants, but the number of storable constant values is limited

Engineering Contradiction:
Improvenumber of constant valuesVSAvoidconstant bank structure
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent divides the constant storage system into two segments: a small, fast constant bank for frequently accessed constants and a larger heap memory for additional constants. This segmentation allows the system to maintain fast access for common constants while expanding total constant capacity through the heap memory accessible via pointer chains.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces pointer chains as an intermediary mechanism between threads and constants stored in heap memory. These pointer chains enable indirect access to constants outside the constant bank, effectively extending the constant storage capacity without requiring direct expansion of the constant bank structure.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If the number of constant banks is limited, then the processor architecture remains simple, but compliance with Tier 3 of DX12 API is not achieved

Engineering Contradiction:
ImproveAPI complianceVSAvoidconstant access mechanism
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent makes the constant access mechanism universal by implementing a unified interface that works for both constants in the constant bank and constants in heap memory. The pointer chain mechanism provides a universal access method that threads can use regardless of where constants are stored, enabling full API compliance while maintaining architectural simplicity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent copies constant values from heap memory to temporary locations accessible by threads through the pointer chain mechanism. This copying approach allows constants to be accessed efficiently without requiring permanent storage expansion in the constant bank, thereby achieving API compliance without proportionally increasing hardware complexity.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If more constant values are made available, then multithreaded applications can fully utilize standard APIs, but the complexity of constant management increases

Engineering Contradiction:
Improveapplication compatibilityVSAvoidconstant binding mechanism
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent performs preliminary actions by pre-organizing constants in heap memory with associated pointer chains before application execution. This preliminary structuring allows the runtime system to efficiently bind constants to threads without complex management during application execution, thereby increasing adaptability while controlling management complexity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements a self-service constant management system where the runtime automatically handles constant binding through pointer chains without requiring explicit programmer intervention. This self-service approach allows multithreaded applications to access a large number of constants while keeping the constant management mechanism transparent and simple for developers.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10877757B2Binding constants at runtime for improved resource utilization
Publication Date: 2020.12.29 NVIDIA CORP
  • US10877757B2 patent drawing
  • US10877757B2 patent drawing
  • US10877757B2 patent drawing

AI summary

A just-in-time (JIT) compiler binds constants to specific memory locations at runtime. The JIT compiler parses program code derived from a multithreaded application and identifies an instruction that references a uniform constant. The JIT compiler then determines a chain of pointers that originates within a root table specified in the multithreaded application and terminates at the uniform constant. The JIT compiler generates additional instructions for traversing the chain of pointers and inserts these instructions into the program code. A parallel processor executes this compiled code and, in doing so, causes a thread to traverse the chain of pointers and bind the uniform constant to a uniform register at runtime. Each thread in a group of threads executing on the parallel processor may then access the uniform constant.