Multi-byte Array Search Using Single-Byte Instructions

Solution Overview

Problem

Current computer architectures cannot effectively utilize single-byte search instructions for searching multi-byte arrays of elements or values, leading to slower search processes and inefficiencies, especially when searching for multiple values, as they require separate SIMD instructions or do not support arrays of certain byte sizes.

Innovation Solution

Implementing an n-byte search instruction, where n is the element size, to optimize the search process by using a single-byte search instruction within a loop of a program, allowing for efficient searching across multi-byte arrays by receiving values and using return addresses to identify search values within the lowest n-bytes of the array.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If single-byte search instructions are used to search multi-byte arrays, then search speed is improved, but the architecture cannot effectively utilize the instruction leading to inefficiencies

Engineering Contradiction:
Core Design Contradiction:
SpeedVSAdaptability or versatility

Solution Approach 1:

The multi-byte array is divided into multiple single-byte segments that can be searched using the existing single-byte search instruction. The patent processes the array by breaking it down into byte-sized units, allowing the use of optimized single-byte search hardware while maintaining compatibility with multi-byte data structures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the dimension of processing by treating multi-byte elements as sequences of single-byte units. Instead of searching multi-byte elements directly, the system searches individual bytes and then reconstructs multi-byte values from the search results, effectively transforming a multi-dimensional search problem into a series of single-dimensional searches.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Adaptability or versatility

If separate SIMD instructions are used for searching multiple values, then search coverage is improved, but device complexity and instruction overhead increase

Engineering Contradiction:
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent makes the single-byte search instruction universal by enabling it to handle multiple search values through repeated execution. Instead of requiring separate specialized instructions for different search scenarios, the same single-byte search instruction is used repeatedly with different parameters, eliminating the need for multiple instruction types and reducing device complexity.

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

Solution Approach 2:

The patent maintains continuous search operation by implementing a loop structure that repeatedly executes the single-byte search instruction for each value in the search set. This continuous execution approach allows multiple values to be searched without interrupting the search process, achieving comprehensive coverage while using a single instruction type.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS12106115B2Searching an array of multi-byte elements using an n-byte search instruction
Publication Date: 2024.10.01
  • US12106115B2 patent drawing
  • US12106115B2 patent drawing
  • US12106115B2 patent drawing

AI summary

A computer-implemented method, system and computer program product for effectively searching for values in a multi-byte array of elements using an n-byte search instruction. Multiple values to be searched in an N-byte array of elements in a loop are received. The loop is optimized by searching the received search values at the starting address of the N-byte array of elements using the n-byte search instruction. A successful search is performed if the received return address points to an address found in the lowest n-bytes of the N-byte array of elements and an element of the address corresponds to a search value. Otherwise, a subsequent search for the search values at the address of the next element in the N-byte array of elements is performed if there are additional elements in the N-byte array of elements to be searched.