JIT Compiler Register Allocation for Loop Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing JAVA virtual machines face inefficiencies in runtime performance due to the lack of effective register allocation during just-in-time compilation of bytecode, particularly in loops, which affects the execution speed and resource utilization.

Innovation Solution

A method for loop-scope register allocation that allocates physical registers to virtual registers before compiling loop code into native code, adding load and unload instructions in specific blocks to optimize register usage and meet compilation requirements, ensuring efficient execution by comparing available registers with a predetermined limit.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If register allocation is performed during just-in-time compilation of bytecode, then compilation can proceed sequentially one instruction at a time, but runtime performance is reduced due to lack of optimization for loop structures

Engineering Contradiction:
Improvecompilation simplicityVSAvoidruntime performance
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The patent performs register allocation before compiling the loop body instructions, rather than during sequential compilation. By analyzing the loop structure first and allocating registers in advance, the system optimizes register usage for the entire loop before code generation, improving runtime performance while maintaining a systematic compilation process

Inventive Principle:
Principle #10Preliminary action

2Productivity

If physical registers are allocated to virtual registers without pre-analysis, then compilation can proceed quickly, but execution speed suffers due to repetitive allocation instructions in loops

Engineering Contradiction:
Improvecompilation speedVSAvoidexecution speed
Core Design Contradiction:
ProductivityVSSpeed

Solution Approach 1:

The system performs loop structure analysis and register allocation before generating the compiled code. This preliminary action identifies loop entries and exits, determines register usage patterns, and allocates physical registers optimally before compilation proceeds, eliminating the need for repetitive allocation instructions during execution

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the compilation process into distinct phases: loop structure analysis, register allocation, and code generation. By separating these steps, the system can optimize register allocation specifically for loop structures without affecting the overall compilation speed, as the allocation phase is performed once before the generation phase

Inventive Principle:
Principle #1Segmentation

3Speed

If register allocation is optimized for loop structures, then execution speed improves, but device complexity increases due to additional analysis requirements

Engineering Contradiction:
Improveexecution speedVSAvoidcompilation system complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent divides the compilation system into modular components: a loop structure analysis module that identifies loop entries and exits, a register allocation module that assigns physical registers, and a code generation module that produces optimized instructions. This segmentation allows each module to perform its specific function efficiently without requiring the entire system to be complex

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

By performing loop structure analysis and register allocation as preliminary steps before code generation, the system consolidates the complexity into a one-time setup phase rather than distributing it throughout the compilation and execution phases. The optimized register allocation is then reused during execution, improving speed without proportionally increasing overall system complexity

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9323508B2Method and system for compiler optimization
Publication Date: 2016.04.26 MARVELL ASIA PTE LTD
  • US9323508B2 patent drawing
  • US9323508B2 patent drawing
  • US9323508B2 patent drawing

AI summary

Aspects of the disclosure provide a method for code compilation. The method includes receiving instructions of a loop code for compiling, allocating one or more registers to variables before compiling the instructions into a loop body for the loop code, and compiling the instructions into the loop body based on the allocated registers.