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 and fixed function units, leading to inefficiencies in program execution and portability across different processors.

Innovation Solution

A compiler is developed to convert high-level primitive programs into optimized micro-code for specific target primitive processors, supporting API conventions, determining output primitive types, and initializing attribute arrays based on input profiles, enabling direct control of programmable processors and improving performance and portability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional primitive processors with fixed function units are used, then program execution is limited to specific processor capabilities, but program portability across different processors deteriorates

Engineering Contradiction:
Improveprogram execution efficiencyVSAvoidprogram portability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

A compiler acts as an intermediary between high-level primitive programs and processor-specific micro-code. The compiler translates portable high-level code into optimized processor-specific micro-code, enabling programs to run efficiently on different processors without modification. This mediator resolves the contradiction by maintaining source code portability while achieving target-specific optimization.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The compilation process segments the program development into two distinct layers: a portable high-level primitive program layer and a processor-specific micro-code layer. This segmentation allows the high-level program to remain unchanged across different processors while the micro-code layer is optimized for each specific processor's capabilities, thus resolving the portability versus efficiency contradiction.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If high-level primitive programs are compiled into processor-specific micro-code, then program portability is improved, but compilation complexity increases

Engineering Contradiction:
Improveprogram portabilityVSAvoidcompiler complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The compiler is designed with universal functionality to handle multiple processor architectures through a single unified tool. By implementing a standardized compilation framework that can target different processors, the system achieves multi-functionality, reducing the need for separate compilation tools for each processor and thereby managing complexity while maintaining portability.

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

3Speed

If fixed function units are used in primitive processors, then processing speed is improved, but programming flexibility deteriorates

Engineering Contradiction:
Improveprocessing speedVSAvoidprogramming flexibility
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The system implements dynamic adaptability where the compiler dynamically generates processor-specific micro-code based on the target processor's fixed function units and capabilities. This dynamic code generation allows the same high-level program to be adapted to different fixed-architecture processors, maintaining programming flexibility while utilizing the speed advantages of fixed function units through optimized micro-code.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8006236B1System and method for compiling high-level primitive programs into primitive program micro-code
Publication Date: 2011.08.23 NVIDIA CORP
  • US8006236B1 patent drawing
  • US8006236B1 patent drawing
  • US8006236B1 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.