Tuning Intermediate Representations in Managed Runtime Environments

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing just-in-time compiler programs in managed runtime environments face limitations in code optimization due to platform-independent bytecode, which restricts low-level optimizations and relies on pre-defined 'magic methods' that may not cater to unique user needs or non-standard platforms.

Innovation Solution

The method allows users to develop and load hand-tuned low-level code as high-level or low-level intermediate representations, enabling direct optimization techniques such as inlining and code generation within the JIT compiler pipeline, bypassing reliance on bytecode and magic methods.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If bytecode is used as the intermediate representation format, then platform independence is achieved, but code optimization capability deteriorates

Engineering Contradiction:
Improveplatform independenceVSAvoidcode optimization capability
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent segments the intermediate representation into two distinct formats: bytecode for platform-independent distribution and tuned intermediate representation for platform-specific optimization. The JIT compiler selectively uses bytecode when platform independence is needed and tuned IR when optimization is the priority, resolving the contradiction by allowing both formats to coexist in different contexts.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system dynamically selects between bytecode and tuned intermediate representation based on runtime conditions and platform characteristics. The JIT compiler can switch between using pre-defined magic methods and user-provided tuned IR, making the optimization approach adaptive rather than static, thus maintaining platform independence when needed while enabling optimization when possible.

Inventive Principle:
Principle #15Dynamics

2Productivity

If magic methods are used for optimization, then performance is improved on common platforms, but adaptability to unique user needs deteriorates

Engineering Contradiction:
Improvecode performanceVSAvoidadaptability to unique needs
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

Instead of the traditional approach where the compiler provides fixed magic methods and users must adapt to them, the patent inverts the relationship by allowing users to provide their own tuned intermediate representation. This reversal empowers users to optimize for their specific needs rather than relying on pre-defined methods, resolving the contradiction between performance and adaptability.

Inventive Principle:
Principle #13The other way round (Inversion)

Solution Approach 2:

The system enables users to self-service their optimization needs by providing tuned intermediate representation directly to the JIT compiler. Users can independently create and load platform-specific optimized code without relying on the compiler designer's magic methods, making the system self-adaptable to unique requirements while maintaining high performance.

Inventive Principle:
Principle #25Self-service

3Productivity

If bytecode-level optimization is applied, then code performance may be improved, but JIT compiler optimization and bytecode verifiability deteriorate

Engineering Contradiction:
Improvecode performanceVSAvoidbytecode verifiability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent introduces tuned intermediate representation as an intermediary format between bytecode and machine code. This intermediary allows optimization to occur at a level that preserves bytecode verifiability while enabling performance improvements, as the tuned IR maintains the abstract syntax tree structure that verifiers can check while allowing low-level optimizations that bytecode alone cannot provide.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS7793275B2Methods and apparatus to tune intermediate representations in a managed runtime environment
Publication Date: 2010.09.07 INTEL CORP
  • US7793275B2 patent drawing
  • US7793275B2 patent drawing
  • US7793275B2 patent drawing

AI summary

Methods and apparatus are disclosed to tune intermediate representations in a managed runtime environment. An example method disclosed herein receives a bytecode at a virtual machine during runtime, determines a method of the received bytecode, identifies an optimized intermediate representation associated with the method, and imports the optimized intermediate representation from the memory into the virtual machine. Other embodiments are described and claimed.