SIMD Vector Max/Min Indexing to Cut DSP Sorting Overhead

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Digital signal processors (DSPs) face increased instruction overhead due to the repetitive nature of sorting functions, which require multiple instructions to identify minimum or maximum values and their positions within arrays.

Innovation Solution

Implementing a single-instruction-multiple-data (SIMD) vector maximum/minimum with indexing instructions that compare data in corresponding lanes of source registers, identify maximum/minimum values, and use a predicate register to assert or de-assert lanes based on the comparison results, reducing instruction overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple instructions are used to identify minimum or maximum values and their positions, then the sorting function can be completed, but the instruction overhead increases

Engineering Contradiction:
Improvesorting function execution efficiencyVSAvoidinstruction overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent combines multiple separate instructions into a single unified instruction that simultaneously identifies both the minimum or maximum value and its position in the array. This merging eliminates the need for sequential execution of multiple instructions, thereby reducing instruction overhead while maintaining complete sorting functionality.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The single instruction performs multiple functions: it identifies the minimum or maximum value, determines its position in the array, and sets the appropriate status flags. This multi-functionality allows the instruction to replace what would traditionally require several separate instructions, improving productivity without increasing complexity.

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

2Productivity

If frequent sorting functions are executed, then data processing is performed, but instruction overhead increases due to repetitive nature

Engineering Contradiction:
Improvedata processing throughputVSAvoidinstruction overhead time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The instruction is designed to perform all necessary sorting operations in a single execution cycle, including value identification, position determination, and flag setting. By completing all these actions preliminarily in one step, the system avoids repeated instruction fetches and decodes that would occur with multiple separate instructions, thereby reducing time loss in frequent sorting operations.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If multiple instructions are used for sorting, then complete sorting functionality is achieved, but resource utilization decreases

Engineering Contradiction:
Improvesorting capabilityVSAvoidprocessor resource utilization
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

By merging multiple sorting-related instructions into a single instruction, the patent reduces the total number of instruction cycles required for sorting operations. This consolidation improves processor resource utilization by eliminating redundant instruction fetches, decodes, and executions, while maintaining complete sorting functionality through the unified instruction's multiple capabilities.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS12481503B2Vector maximum and minimum with indexing
Publication Date: 2025.11.25 TEXAS INSTRUMENTS INC
  • US12481503B2 patent drawing
  • US12481503B2 patent drawing
  • US12481503B2 patent drawing

AI summary

A method to compare first and second source data in a processor in response to a vector maximum with indexing instruction includes specifying first and second source registers containing first and second source data, a destination register storing compared data, and a predicate register. Each of the registers includes a plurality of lanes. The method includes executing the instruction by, for each lane in the first and second source register, comparing a value in the lane of the first source register to a value in the corresponding lane of the second source register to identify a maximum value, storing the maximum value in a corresponding lane of the destination register, asserting a corresponding lane of the predicate register if the maximum value is from the first source register, and de-asserting the corresponding lane of the predicate register if the maximum value is from the second source register.