Vector Instruction Loop for String Comparison Null Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing string comparison operations using SIMD processing are inefficient due to complex execution paths and difficulty in predicting branch outcomes, leading to suboptimal performance.

Innovation Solution

A vector instruction loop is implemented to perform simultaneous comparisons of string elements and null-terminating characters, with results stored in a vector or condition code register, allowing for simplified branching and reduced instruction count.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional SIMD string comparison operations are used with separate comparison instructions for character equality and null-terminating character detection, then the comparison can be performed using standard vector instructions, but the execution path becomes complex with multiple branches that are difficult to predict

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidinstruction sequence complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent combines two separate comparison operations (character equality comparison and null-terminating character detection) into a single vector instruction. This merging eliminates the need for multiple separate instructions and branches, simplifying the execution path and improving branch prediction accuracy while maintaining comprehensive string comparison functionality.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The invention creates a universal vector instruction that performs multiple comparison functions simultaneously - it can compare characters for equality, detect null-terminating characters, and set condition codes based on the results. This multi-functional instruction replaces what previously required multiple specialized instructions, reducing overall sequence complexity.

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

2Productivity

If multiple separate instructions are used to compare string characters and check for null-terminating characters, then each comparison operation can be performed independently, but the total instruction count increases and execution efficiency decreases

Engineering Contradiction:
Improvestring comparison throughputVSAvoidexecution time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

By merging character equality comparison and null-terminating character detection into a single vector instruction that operates on multiple elements simultaneously, the patent achieves higher throughput. The instruction processes entire vectors in parallel rather than requiring sequential execution of multiple scalar operations, significantly reducing total execution time.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent employs vectorized periodic action where a single instruction repeatedly compares multiple character pairs and null-terminating characters across the entire vector in one operation. This periodic vector operation replaces what would require multiple sequential scalar comparisons, improving productivity by processing bulk data in unified cycles.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentUS9009447B2Acceleration of string comparisons using vector instructions
Publication Date: 2015.04.14 ORACLE INT CORP
  • US9009447B2 patent drawing
  • US9009447B2 patent drawing
  • US9009447B2 patent drawing

AI summary

A processor, method, and medium for using vector instructions to perform string comparisons. A single instruction compares the elements of two vectors and simultaneously checks for the null character. If an inequality or the null character is found, then the string comparison loop terminates, and a further check is performed to determine if the strings are equal. If all elements are equal and the null character is not found, then another iteration of the string comparison loop is executed. The vectors are loaded with the next portions of the strings, and then the next comparison is performed. The loop continues until either an inequality or the null character is found.