Vector Multiply-Accumulate Instruction Format for Packed Byte Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computer processors require multiple instructions to perform vector multiply and accumulate operations efficiently, which can lead to increased processing time and resource utilization, especially when handling packed byte data.

Innovation Solution

The introduction of a vector friendly instruction format that supports vector operations, allowing for a single instruction to perform multiply-accumulate operations on packed bytes, utilizing a generic vector friendly instruction format with specific fields for operation, operands, and data element widths, enabling efficient execution of vector multiply and accumulate instructions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple instructions are used to perform vector multiply and accumulate operations, then processing accuracy and reliability are maintained, but processing time increases and productivity decreases

Engineering Contradiction:
Improveprocessing speedVSAvoidprocessing time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent combines multiple separate instructions (multiply instruction followed by addition instruction) into a single vector multiply and accumulate instruction. This merging allows the processor to perform both multiplication and accumulation operations in one execution cycle, thereby reducing processing time and improving productivity without sacrificing computational accuracy.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The invention creates a universal vector multiply and accumulate instruction that can handle various data types (bytes, words, doublewords, quadwords) and perform multiple operations (multiply, accumulate, saturate) within a single instruction framework. This multi-functionality enables the same instruction to replace multiple specialized instructions, reducing overall processing time.

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

2Productivity

If a single instruction performs vector multiply and accumulate operations, then productivity increases, but device complexity increases

Engineering Contradiction:
Improveprocessing speedVSAvoidinstruction format complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the complex vector multiply and accumulate operation into distinct functional fields within the instruction format: opcode fields for identifying the operation type, operand fields for specifying source and destination vectors, and control fields for saturation and data type selection. This segmentation allows the complex functionality to be managed through organized, modular instruction components rather than monolithic complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The invention uses parameter fields within the instruction to dynamically specify data element widths (bytes, words, doublewords, quadwords) and operation modes (multiply, accumulate, saturate). By encoding these parameters directly in the instruction, the system achieves flexibility and reduced processing time without requiring multiple specialized instructions, thereby managing device complexity through efficient parameter encoding.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11768681B2Apparatus and method for vector multiply and accumulate of packed bytes
Publication Date: 2023.09.26 INTEL CORP
  • US11768681B2 patent drawing
  • US11768681B2 patent drawing
  • US11768681B2 patent drawing

AI summary

An apparatus and method for performing multiply-accumulate operations. For example, one embodiment of a processor comprises: a decoder to decode instructions; a first source register to store a first plurality of packed bytes; a second source register to store a second plurality of packed bytes; a third source register to store a plurality of packed doublewords; execution circuitry to execute a first instruction, the execution circuitry comprising: extension circuitry to sign-extend or zero-extend the first and second plurality of packed bytes to generate a first and second plurality of words corresponding to the first and second plurality of packed bytes; multiplier circuitry to multiply each of the first plurality of words with a corresponding one of the second plurality of words to generate a plurality of temporary products; adder circuitry to add at least a first set of the temporary products to generate a first temporary sum; accumulation circuitry to combine the first temporary sum with a first packed doubleword value from a first doubleword location in the third source register to generate a first accumulated doubleword result; a destination register to store the first accumulated doubleword result in the first doubleword location.