Vector Instructions for Large Integer Arithmetic

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing technologies face challenges in efficiently performing large integer arithmetic operations, particularly in vector processing, where existing methods are inefficient in handling and processing multiple large integers simultaneously.

Innovation Solution

The development of vector instructions and execution units that utilize a combination of multiplication and addition instructions, along with masking logic, to efficiently multiply and accumulate partial products for large integers, allowing for parallel processing of multiple integer operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If traditional scalar arithmetic instructions are used for large integer operations, then the processor architecture remains simple, but the processing speed and efficiency for large integer arithmetic deteriorates

Engineering Contradiction:
Improveprocessing speed for large integer arithmeticVSAvoidprocessor architecture complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent segments large integer arithmetic operations into smaller operations by dividing integers into multiple digits represented in registers. Each register holds a digit (e.g., 32-bit or 64-bit), and the arithmetic operations are performed on these segmented digits using traditional ALU instructions, thereby achieving fast processing without requiring complex new hardware architecture

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension of operation by enabling simultaneous processing of multiple integer digits across different registers through vectorization. This allows the processor to handle large integer arithmetic by operating on multiple segmented digits in parallel, effectively increasing processing speed while maintaining architectural simplicity through the use of existing register and instruction mechanisms

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

2Productivity

If multiple large integers are processed simultaneously in vector processing, then the productivity increases, but the complexity of handling and processing multiple integers deteriorates

Engineering Contradiction:
Improvethroughput for multiple large integer operationsVSAvoidcomplexity of handling multiple integers
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent makes the existing register and instruction set universal by enabling them to handle both single and multiple integer operations. The same register architecture and basic arithmetic instructions can process either one large integer or multiple integers simultaneously through vectorization, eliminating the need for separate specialized hardware for multi-integer processing and thereby increasing productivity without adding complexity

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

Solution Approach 2:

The patent merges multiple integer processing operations into a unified vector processing framework. By combining multiple scalar operations into vector operations that can execute simultaneously, the system achieves high throughput for multiple large integer arithmetic operations while using a unified and simplified processing approach rather than requiring separate complex handling mechanisms for each operation

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10037210B2Apparatus and method for vector instructions for large integer arithmetic
Publication Date: 2018.07.31 TAHOE RES LTD
  • US10037210B2 patent drawing
  • US10037210B2 patent drawing
  • US10037210B2 patent drawing

AI summary

An apparatus is described that includes a semiconductor chip having an instruction execution pipeline having one or more execution units with respective logic circuitry to: a) execute a first instruction that multiplies a first input operand and a second input operand and presents a lower portion of the result, where, the first and second input operands are respective elements of first and second input vectors; b) execute a second instruction that multiplies a first input operand and a second input operand and presents an upper portion of the result, where, the first and second input operands are respective elements of first and second input vectors; and, c) execute an add instruction where a carry term of the add instruction's adding is recorded in a mask register.