Range Check Instruction for Vector Processing Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for determining whether a value is within a range are inefficient, particularly due to the high computational cost of modulus operations and the complexity of handling out-of-range values in vector processing environments.

Innovation Solution

A specialized instruction that takes a candidate value and a range as input, calculates the difference between the value and the range, and returns the original value if it's within the range or a wrapped value if it's out of range, effectively handling out-of-range values by 'wrapping' them around to the beginning of the range.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional methods using modulus operations are used to determine whether a value is within a range, then the range checking can be performed, but the computational cost is high and execution efficiency is low

Engineering Contradiction:
Improverange checking accuracyVSAvoidexecution efficiency
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent changes the computational approach from modulus operation to a combination of subtraction and conditional selection. Instead of computing value % range, the method computes (value - range) and uses a conditional select instruction to choose between the original value and the computed difference based on whether the value is greater than the range. This parameter transformation eliminates the computationally expensive modulus operation while preserving the range-checking functionality.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent replaces the traditional modulus operation mechanism with a newer conditional select instruction mechanism. The conditional select instruction (vselect) is specifically designed to efficiently choose between two values based on a condition, replacing the older modulus-based approach that required multiple arithmetic operations and conditional jumps. This substitution leverages modern processor capabilities to improve execution efficiency.

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

2Reliability

If complex handling methods are used for out-of-range values in vector processing, then all edge cases can be covered, but the instruction complexity and overhead increase

Engineering Contradiction:
Improveout-of-range value handlingVSAvoidinstruction complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the range-checking logic from complex conditional handling sequences and condenses it into a single conditional select instruction. By taking out only the essential operation (selecting between in-range and out-of-range values) and eliminating unnecessary intermediate steps, the method reduces instruction complexity while maintaining reliable handling of out-of-range values in vector processing contexts.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The conditional select instruction serves multiple functions: it performs range checking, handles out-of-range values, and produces the wrapped result all in a single operation. This multi-functional approach replaces what would traditionally require separate instructions for each function, reducing overall instruction complexity while maintaining comprehensive handling of all cases including out-of-range values.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS9898284B2Apparatus and method for an instruction that determines whether a value is within a range
Publication Date: 2018.02.20 INTEL CORP
  • US9898284B2 patent drawing
  • US9898284B2 patent drawing
  • US9898284B2 patent drawing

AI summary

A method is described that includes performing the following with a single instruction: receiving a first input operand V; receiving a second input operand S; calculating V−S; determining if V−S is positive or negative; and, providing as a resultant: V if V−S is negative; V−S if V−S is positive.