Variable Width Vector Processing via Dynamic Register Sizing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing vector processing units require a large instruction set to support various vector widths, leading to increased decoding time and incompatibility between processing units with different vector register widths, limiting code portability across different hardware configurations.

Innovation Solution

A processing unit that obtains and uses the width of a vector register from a vector size register to execute variable width vector processing instructions, allowing a single set of instructions to support multiple vector widths without the need for new instructions or code modifications, and enabling execution on processing units with different vector register widths.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If the processing unit includes separate vector processing instructions for each vector width, then the processing unit can support multiple vector widths, but the instruction set becomes larger and decoding time increases

Engineering Contradiction:
Improvesupport for multiple vector widthsVSAvoidinstruction set size
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements a universal vector processing instruction format where a single instruction set can operate on vector registers of different widths (e.g., 128-bit, 256-bit, 512-bit). The instruction format includes a field that specifies the intended vector width, allowing the same instruction to be executed on different vector register sizes without requiring separate instruction sets for each width.

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

2Adaptability or versatility

If the processing unit includes separate vector processing instructions for each vector width, then the processing unit can support multiple vector widths, but code written for one processing unit cannot be executed by another processing unit with different vector register widths

Engineering Contradiction:
Improvecode portability across hardware configurationsVSAvoidinstruction set variations
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent creates a universal instruction format where the instruction set is independent of the specific vector register width. The instruction includes a width specification field that indicates which vector register width should be used, enabling the same code to be executed on processing units with different vector register configurations (e.g., 128-bit vs. 256-bit registers) without modification.

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

3Productivity

If the processing unit uses a fixed vector width instruction set, then the instruction decoding is simpler and faster, but the processing unit cannot execute variable width vector operations

Engineering Contradiction:
Improveinstruction decoding speedVSAvoidvariable vector width support
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent implements a dynamic instruction format where the vector width is not fixed but can be specified at runtime through a width field in the instruction. This allows the processing unit to adapt the vector operation width based on the specific requirements of the computation, enabling variable width operations while maintaining a relatively simple and fast decoding mechanism compared to having separate fixed instructions for each width.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8555034B2Execution of variable width vector processing instructions
Publication Date: 2013.10.08 ORACLE AMERICAN INC
  • US8555034B2 patent drawing
  • US8555034B2 patent drawing
  • US8555034B2 patent drawing

AI summary

A processing unit executes a vector width instruction in a program and the processing unit obtains and supplies the width of an appropriate vector register that will be used to process variable vector processing instructions. Then, when the processing unit executes variable vector processing instructions in the program, the processing unit processes the variable vector processing instructions using the appropriate vector register with the instructions having the same width as the appropriate vector register. The width that the processing unit obtains may be less than an actual width of the appropriate vector register and may set by the processing unit. In this way, many different vector widths can be supported using a single set of instructions for vector processing. New instructions are not required if vector widths are changed and processing units having vector registers of differing widths do not require different code.