Block Number Dot Products Using Shared Exponents for SIMD Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing hardware implementations of block floating-point numbers are inefficient for SIMD architectures due to large memory requirements and lack of optimized software support, particularly in deep learning applications.

Innovation Solution

Development of instructions for dot products using block floating-point numbers that include fast conversion instructions, optimized for CPU and GPU architectures, allowing efficient storage and computation of block floating-point data types.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If block floating-point numbers are used for storage, then storage efficiency is improved, but hardware implementation complexity increases

Engineering Contradiction:
Improvestorage efficiencyVSAvoidhardware implementation complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The block floating-point number is segmented into a shared exponent field and multiple mantissa fields, allowing efficient packing in memory while maintaining the ability to process individual elements. This segmentation enables the compact representation that improves storage efficiency without requiring complex hardware to manage the structure.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces specialized instruction sequences that act as intermediaries between standard SIMD hardware and block floating-point data structures. These instructions handle the conversion and processing operations, shielding the hardware from the complexity of block floating-point arithmetic while enabling efficient storage utilization.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If standard floating-point formats are used, then computational precision is improved, but memory usage increases

Engineering Contradiction:
Improvecomputational precisionVSAvoidmemory usage
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

Multiple floating-point numbers are merged into a single block floating-point structure by sharing a common exponent across multiple mantissas. This combining reduces the total memory required compared to storing each floating-point number separately with its own exponent, while preserving the precision benefits of floating-point representation through the shared exponent mechanism.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If block floating-point operations are implemented, then processing throughput is improved, but instruction complexity increases

Engineering Contradiction:
Improveprocessing throughputVSAvoidinstruction complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements preliminary conversion instructions that transform standard floating-point data into block floating-point format before processing. This preliminary action prepares the data in an optimized structure that enables higher throughput during subsequent operations, while the conversion complexity is isolated to the preparation stage rather than affecting the core processing loop.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20250208864A1Block number dot product
Publication Date: 2025.06.26 ALTERA CORP
  • US20250208864A1 patent drawing
  • US20250208864A1 patent drawing
  • US20250208864A1 patent drawing

AI summary

Techniques for dot products using block format numbers are described. In some examples, a single instruction including one or more fields for an identifier of at least a first source operand, one or more field for an identifier of a second source operand, and one or more fields for an identifier of a destination operand, and a field for an opcode, the opcode to at least indicate execution circuitry is to perform a dot product utilizing data that is in the block format to encode one or more numbers, wherein a block number of the block format has a value of a scale multiplied by a value of a scalar element and wherein the data that is in the block format is to use data from at least the first and second source operands is used for performing dot products.