Bounds Checking Optimization via Computer Algebra

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing programming languages face inefficiencies in runtime due to the overhead of bounds-checking instructions, which are necessary to prevent index value errors but increase execution time, especially in loops.

Innovation Solution

The system employs computer algebra to determine whether an expression's value is guaranteed to be within specified bounds at compile time, thereby eliminating the need for bounds-checking instructions if the value is within the bounds, reducing overhead by using control flow graphs to simplify expressions and compare them with zero.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If bounds-checking instructions are added to ensure variables remain within valid ranges, then reliability is improved, but runtime overhead increases

Engineering Contradiction:
Improvebounds checkingVSAvoidruntime overhead
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary analysis at compile time using computer algebra to determine whether bounds checking is necessary. By analyzing expressions symbolically before runtime, the system can eliminate unnecessary bounds-checking instructions while maintaining reliability for cases where checks are truly needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention changes the parameter of bounds checking from a static always-on approach to a dynamic approach where checking is applied selectively based on compile-time analysis results. This allows the system to adapt the presence of bounds-checking instructions based on the specific expression and context.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If bounds-checking instructions are executed each time a loop variable is incremented, then reliability is improved, but productivity deteriorates

Engineering Contradiction:
Improvebounds checkingVSAvoidruntime performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary analysis at compile time to determine whether bounds checking is necessary for each expression. This upfront analysis eliminates the need for repeated checks at runtime in cases where the bounds can be statically determined, thereby improving productivity while maintaining reliability where needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention extracts and removes unnecessary bounds-checking instructions from the runtime code by using computer algebra to prove that certain expressions will always remain within valid bounds. This extraction of redundant checks directly improves productivity without compromising reliability.

Inventive Principle:
Principle #2Taking out (Extraction)

3Loss of time

If computer algebra is used to simplify expressions and determine bounds at compile time, then runtime overhead is reduced, but device complexity increases

Engineering Contradiction:
Improveruntime overheadVSAvoidcompile-time processing
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The invention substitutes mechanical runtime checks with compile-time computer algebra analysis. By replacing the mechanical execution of bounds-checking instructions at runtime with symbolic mathematical analysis at compile time, the system reduces runtime overhead while the increased compile-time complexity is acceptable as it occurs during development rather than execution.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS8484613B2Optimizing bounds checking using computer algebra
Publication Date: 2013.07.09 SYNOPSYS INC
  • US8484613B2 patent drawing
  • US8484613B2 patent drawing
  • US8484613B2 patent drawing

AI summary

Some embodiments of the present invention provide techniques and systems for optimizing bounds-checking During operation, the system can receive one or more instructions which when executed evaluate a first expression whose value is required to be between a lower bound expression's value and an upper bound expression's value, such that at least one of the following three values is not determinable before execution: the first expression's value, the lower bound expression's value, and the upper bound expression's value. Next, the system can use computer algebra to determine whether the first expression's value is guaranteed to be between the lower bound expression's value and the upper bound expression's value. If the system determines that the first expression's value is not guaranteed to be between the lower bound expression's value and the upper bound expression's value, the system can add bounds-checking instructions to the one or more instructions.