Compiler System for Vector Processor Code Compilation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing compiler technologies face challenges in efficiently compiling source code for execution by processors, particularly in optimizing code for vector processors to achieve high-performance processing.

Innovation Solution

The development of a compiler system that includes a Vector Micro-Code Processor (VMP) OpenCL compiler, utilizing a Low Level Virtual Machine (LLVM) based compilation scheme, to efficiently compile source code into target code optimized for vector processors. This involves a front-end for parsing OpenCL C-code, a middle-end for optimizations, and a back-end for generating target-specific machine code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a traditional compiler is used to compile source code for vector processors, then the compilation process is simple, but the processing performance and resource utilization are insufficient

Engineering Contradiction:
Improveprocessing performanceVSAvoidcompiler system complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The compiler is divided into distinct modules: front-end for parsing OpenCL C-code, middle-end for optimizations, and back-end for generating target-specific machine code. This segmentation allows each module to specialize in specific tasks, improving overall compilation efficiency and processing performance while managing complexity through modular design.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An intermediate representation (IR) is introduced as a mediator between the source code and target machine code. The IR serves as a common format that facilitates optimizations in the middle-end and enables efficient code generation in the back-end, thereby improving processing performance without proportionally increasing complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If code is optimized for vector processors, then processing efficiency improves, but the compilation complexity increases

Engineering Contradiction:
Improveresource utilizationVSAvoidcompilation system complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The compiler applies different optimization strategies tailored to vector processor characteristics in the middle-end. Specific optimizations are applied locally to code regions that benefit from vectorization, improving resource utilization while avoiding unnecessary complexity in parts of the code that don't require such optimizations.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The back-end transforms the intermediate representation into target-specific machine code by changing parameters such as instruction encoding, register allocation, and memory access patterns to match vector processor architecture. This parameter transformation enables efficient resource utilization on vector processors while keeping the optimization logic separate from code generation.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS20250028509A1Apparatus, system, and method of compiling code for a processor
Publication Date: 2025.01.23 MOBILEYE VISION TECH LTD
  • US20250028509A1 patent drawing
  • US20250028509A1 patent drawing
  • US20250028509A1 patent drawing

AI summary

For example, a compiler may be configured to identify a first plurality of instructions based on a source code to be compiled into a target code to be executed by a target processor. For example, the compiler may be configured to determine, based on the first plurality of instructions, an instruction to Arithmetic Logic Unit (ALU) (instruction-ALU) allocation to allocate a second plurality of instructions to a plurality of ALU's of the target processor. For example, the second plurality of instructions may be based on the first plurality of instructions. For example, the compiler may be configured to generate the target code based on compilation of the source code. For example, the target code may be based on the second plurality of instructions allocated to the plurality of ALUs.