Software Instruction Translator for Specialized Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Programming for specialized processors with unique instruction sets is challenging due to the need for learning new languages and debugging complexities, and high-level programming languages often map to numerous low-level instructions, reducing efficiency.

Innovation Solution

A software instruction translator that receives source code restricted to a subset of a high-level language and translates it directly into a specialized instruction set, ensuring each statement maps to a single instruction, facilitating efficient execution on specialized processors like vector coprocessors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If programmers use high-level programming languages like C to write software for specialized instruction sets, then programming becomes easier and debugging becomes more convenient, but the generated code does not efficiently utilize the specialized instruction set because many high-level language statements map to numerous low-level instructions

Engineering Contradiction:
Improveprogramming easeVSAvoidexecution efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent introduces an intermediate language that serves as a mediator between high-level programming languages and specialized instruction sets. This intermediate language is designed to map directly to the specialized instruction set while maintaining the ease of high-level programming. The translation process occurs in two stages: first from high-level language to intermediate language, then from intermediate language to specialized instruction set, allowing programmers to write efficient code without directly learning the specialized instruction set syntax

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the compilation process into distinct stages: high-level language compilation to intermediate language, and intermediate language translation to specialized instruction set. This segmentation allows each stage to be optimized independently, with the intermediate language serving as a bridge that preserves programming ease while enabling efficient mapping to the target instruction set

Inventive Principle:
Principle #1Segmentation

2Productivity

If programmers learn and write directly in specialized instruction sets, then code execution efficiency is maximized, but programming becomes arduous and debugging becomes inconvenient due to the need to learn new language syntax and limited debugging environments

Engineering Contradiction:
Improveexecution efficiencyVSAvoidprogramming ease
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The intermediate language acts as a protective intermediary layer that shields programmers from the complexity of specialized instruction sets. Programmers can write code in the intermediate language using familiar syntax and debugging tools, while the system automatically translates to efficient specialized instructions, eliminating the need for programmers to directly learn complex instruction set syntax

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The intermediate language creates a simplified copy or abstraction of the specialized instruction set that retains the essential efficiency characteristics while presenting a more programmer-friendly interface. This copying approach allows developers to work with a simplified version that can be automatically transformed into the full-featured specialized instruction set

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If high-level language statements are compiled to specialized instruction sets, then programming familiarity is maintained, but code efficiency is reduced because statements map to tens or hundreds of low-level instructions

Engineering Contradiction:
Improveprogramming language compatibilityVSAvoidcode efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent divides the language translation process into two separate compilation stages, allowing the first stage to maintain high-level language compatibility while the second stage optimizes for instruction set efficiency. This segmentation enables the intermediate language to serve as a bridge that preserves adaptability while improving code efficiency

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The intermediate language changes the parameters of language representation by introducing a new intermediate representation that is optimized for the target architecture. This parameter change allows the same programming constructs to be represented in a way that maps more efficiently to the specialized instruction set, reducing the number of low-level instructions generated

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9092228B2Systems and methods for software instruction translation from a high-level language to a specialized instruction set
Publication Date: 2015.07.28 TEXAS INSTRUMENTS INC
  • US9092228B2 patent drawing
  • US9092228B2 patent drawing
  • US9092228B2 patent drawing

AI summary

A computer system includes a processor and program storage coupled to the processor. The program storage stores a software instruction translator that, when executed by the processor, is configured to receive source code and translate the source code to a low-level language. The source code is restricted to a subset of a high-level language and the low-level language is a specialized instruction set. Each statement of the subset of the high-level language directly maps to an instruction of the low-level language.