Array Access Boundary Check via Two-Instruction Validation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing processor architectures lack instruction-level array boundary checks, leading to potential memory corruption from out-of-bounds array access and inefficient array access operations.

Innovation Solution

Implementing a two-instruction process for array access that includes a boundary check to validate the index range and, if valid, calculates the memory address for accessing array elements, thereby preventing invalid access and optimizing array access efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If array boundary check is implemented at instruction level, then reliability is improved, but device complexity increases

Engineering Contradiction:
Improvearray access safetyVSAvoidinstruction level complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent combines the array boundary check function with the existing array access instruction into a single unified instruction. The instruction simultaneously performs address calculation and bounds validation, eliminating the need for separate check instructions and reducing overall system complexity while maintaining instruction-level safety.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The boundary check is performed as a preliminary action within the array access instruction itself, before the actual memory access occurs. This preliminary validation prevents out-of-bounds access from causing memory corruption while integrating the safety check seamlessly into the normal access flow.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If array boundary check is implemented at instruction level, then productivity is improved, but device complexity increases

Engineering Contradiction:
Improvearray access efficiencyVSAvoidinstruction level complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges multiple operations (address calculation, bounds checking, and access validation) into a single instruction execution cycle. This consolidation eliminates the need for multiple sequential instructions, thereby improving array access productivity without proportionally increasing device complexity.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The array access instruction performs its own boundary validation without requiring external intervention or separate validation instructions. This self-service capability enables the instruction to efficiently verify bounds internally, improving productivity while avoiding the overhead of additional complex validation mechanisms.

Inventive Principle:
Principle #25Self-service

3Loss of time

If array boundary check is performed, then loss of time is reduced, but device complexity increases

Engineering Contradiction:
Improvetime for array accessVSAvoidinstruction level complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent combines boundary checking with address calculation in a single instruction, eliminating the need for separate check instructions that would increase execution time. This merging approach reduces time loss by performing both operations concurrently within one instruction cycle.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The boundary check is performed preliminarily within the instruction execution flow, ensuring that invalid accesses are detected and handled immediately without requiring additional time for separate validation steps. This preliminary action prevents time loss from erroneous access attempts.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7577801B1Array access
Publication Date: 2009.08.18 AZUL SYSTEMS INC
  • US7577801B1 patent drawing
  • US7577801B1 patent drawing
  • US7577801B1 patent drawing

AI summary

Accessing memory in an array includes performing a first instruction, including by determining whether an index used by the first instruction is within a valid range and in the event that the index is within a valid range, determining a memory address related to an array element that corresponds to the index. Accessing memory in the array further includes, in the event that the index is within a valid range, performing a second instruction to access the array element, the access being based at least in part on the memory address determined by the first instruction.