Compiler for Primitive Program Micro-code Generation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional programmable primitive processors require modifications to run high-level primitive programs, as they have varying capabilities, making it difficult to compile programs for execution across different processors without significant modifications.

Innovation Solution

A compiler is configured to generate micro-code optimized for specific target primitive processors by supporting API conventions, determining output primitive types, initializing attribute arrays, and determining vertex set lengths based on input profiles, allowing high-level primitive programs to control and optimize execution on particular processors for improved performance and portability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a high-level primitive program is compiled for a specific target primitive processor, then execution performance is improved, but portability to other processors deteriorates

Engineering Contradiction:
Improveexecution performanceVSAvoidportability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The compiler changes parameters by generating different micro-code representations of the same high-level primitive program based on the target processor's capabilities. Each processor receives optimized micro-code tailored to its specific architecture, instruction set, and execution characteristics, thereby achieving both performance optimization and portability through parameterized compilation.

Inventive Principle:
Principle #35Parameter changes

2Device complexity

If conventional primitive processors are used with fixed function units, then device complexity is reduced, but adaptability to different primitive types deteriorates

Engineering Contradiction:
Improveprocessor architectureVSAvoidprimitive type support
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The primitive processor is designed with programmable function units that can be configured to handle different primitive types through micro-code interpretation. The processor maintains a unified architecture that can execute various primitive processing tasks by loading appropriate micro-code, achieving multi-functionality without increasing physical device complexity.

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

3Productivity

If high-level primitive programs are modified for each processor, then execution performance is improved, but ease of operation deteriorates

Engineering Contradiction:
Improveexecution performanceVSAvoidprogram portability
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The compiler acts as an intermediary that translates the high-level primitive program into processor-specific micro-code. This intermediary handles all the complexity of processor-specific optimizations, allowing developers to write portable high-level programs without manually modifying code for different processors, thereby maintaining ease of operation while achieving performance optimization.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8171461B1Primitive program compilation for flat attributes with provoking vertex independence
Publication Date: 2012.05.01 NVIDIA CORP
  • US8171461B1 patent drawing
  • US8171461B1 patent drawing
  • US8171461B1 patent drawing

AI summary

Systems and methods for compiling high-level primitive programs are used to generate primitive program micro-code for execution by a primitive processor. A compiler is configured to produce micro-code for a specific target primitive processor based on the target primitive processor's capabilities. The compiler supports features of the high-level primitive program by providing conversions for different applications programming interface conventions, determining output primitive types, initializing attribute arrays based on primitive input profile modifiers, and determining vertex set lengths from specified primitive input types.