IP Library Granted Patent US 11,429,349
Granted Patent B1
US 11,429,349 · App. 17/397,241 · Granted Aug 30, 2022

Floating point multiply-add, accumulate unit with carry-save accumulator

Inventors: Vojin G. Oklobdzija (Berkeley, CA); Matthew M. Kim (Frankston South, AU)
Assignee: SambaNova Systems, Inc.
G06F7/5443G06F7/483G06F7/4824
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,429,349
App. No.
17/397,241
Granted
Aug 30, 2022
Kind
B1
Abstract

Floating point Multiply-Add, Accumulate Unit, supporting BF16 format for Multiply-Accumulate operations, and FP32 Single-Precision Addition complying with the IEEE 754 Standard. The Multiply-Accumulate unit uses higher radix and longer internal 2's complement significand representation to facilitate precision as well as comparison and operation with negative numbers. The addition is performed using Carry-Save format to avoid long carry propagation and speed up the operation. Operations including overflow detection, zero detection and sign extension are adopted for 2s complement and Carry-Save format. Handling of Overflow and Sign Extension allows for fast operation relatively independent on the size of the accumulator.

Claims (77)

1. A multiply-and-accumulate unit, comprising:

a pipeline configured to execute a multiply-and-accumulate operation for a sequence of input floating point operands, the pipeline including:

a significand circuit receiving in a pipeline cycle a multiplier output significand in a 2's complement format and fed back sum and carry values of a fed back accumulator output, the significand circuit including a 2's complement, carry-save adder, to generate sum and carry accumulator output significand values of an accumulator output; and

an exponent circuit receiving in the pipeline cycle, a multiplier output exponent in radix-8 format and a fed back exponent value of the fed back accumulator output in the radix-8 format, to generate an accumulator output exponent value of the accumulator output.

2. The multiply-and-accumulate unit of claim 1 , wherein:

the significand circuit includes a significand shifter, responsive to exponent comparison signals, to align the multiplier output significand and the fed back sum and carry values for addition;

the exponent circuit is responsive to the exponent comparison signals to generate the accumulator output exponent value; and

the pipeline includes exponent comparison circuits to compare prior to the pipeline cycle the multiplier output exponent to the fed back exponent value to generate the exponent comparison signals.

3. The multiply-and-accumulate unit of claim 2 , wherein the pipeline includes:

an overflow detector circuit, to generate an overflow signal indicating an overflow condition for at least one of the fed back sum and carry values; and

the exponent circuit and significand circuit are also responsive to the overflow signal.

4. The multiply-and-accumulate unit of claim 2 , wherein the pipeline includes:

an overflow detector circuit, to generate a first condition signal indicating an overflow condition for at least one of the fed back sum and carry values;

a leading sign bit detector circuit, to generate a second condition signal indicating that at least one of the fed back sum and carry values has more than or equal to a number 8 of extended sign bits; and

the exponent circuit and significand circuit are also responsive to the first condition signal and the second condition signal.

5. The multiply-and-accumulate unit of claim 1 , wherein the pipeline includes:

a multiplier circuit to provide multiplier significand and multiplier exponent values prior to the pipeline cycle in response to first and second input operands;

a radix-8 conversion circuit to convert the multiplier significand and multiplier exponent values to radix-8 format for the multiplier output exponent and significand; and

a 2's complement conversion circuit to convert the multiplier significand value to a 2's complement representation for the multiplier output significand.

6. The multiply-and-accumulate unit of claim 1 , wherein the pipeline includes:

a multiplier circuit to provide multiplier significand and multiplier exponent values prior to the pipeline cycle in response to first and second input operands, wherein the multiplier circuit includes a significand multiplier circuit and an exponent adder circuit, the significand multiplier circuit having carry-save adders for partial products used to generate carry and sum values to generate higher order bits of the multiplier output significand and a ripple-carry adder for partial products used to generate lower order bits of the significand carry and sum outputs.

7. The multiply-and-accumulate unit of claim 1 , wherein the pipeline includes:

a multiplier circuit, including a significand multiplier circuit and an exponent adder circuit, to provide multiplier significand and multiplier exponent values prior to the pipeline cycle in response to first and second input operands, and wherein the first and second input operands are in a floating point format including an offset so that negative exponents are represented by positive binary numbers, and a circuit to correct for the offset inverts a most significant bit of one of the first and second operands and adds 1 to a carry-in input of the exponent adder circuit.

8. The multiply-and-accumulate unit of claim 1 , wherein the pipeline has an accumulator mode and a summing mode, and includes:

a selector to provide the fed back accumulator output in the accumulator mode, and to provide a third floating point input operand in the summing mode to the significand circuit and exponent circuit.

9. The multiply-and-accumulate unit of claim 1 , wherein the pipeline includes:

a first stage including a floating point multiplier with sum and carry outputs;

a second stage including a multiplier output adder for the sum and carry outputs of the multiplier and circuits to convert the multiplier adder output to radix-8 format with a 2's complement significand;

a third stage including said significand circuit and said exponent circuit;

a fourth stage to convert the accumulator sign bit, an accumulator exponent and accumulator significand sum and carry values to a sign-magnitude significand format;

a fifth stage to convert the sign-magnitude significand format from radix-8 alignment to radix-2 alignment, and produce a normalized exponent and significand; and

a sixth stage to perform rounding and conversion to a standard floating point representation.

10. A multiply-and-accumulate method to calculate a summation S(i) of terms A(i)*B(i), where (i) goes from 0 to N−1, and N is a number of terms in the summation, the method comprising:

receiving a sequence of operands A(i) and operands B(i) in floating point format, for (i) going from 1 to N at a multiply-and-accumulate unit;

multiplying operand A(i) and operand B(i) by a multiplier pipeline stage of the multiply-and-accumulate unit to generate term A(i)*B(i) in a format including a multiplier output exponent in a radix-8 format and a multiplier output significand, and converting the multiplier output significand to a 2's complement format;

using a carry-save adder in an accumulator pipeline stage of the multiply-and-accumulate unit to add the multiplier output significand of term A(i)*B(i) in the 2's complement format to a significand of summation S(i−1), and generate sum and carry values for summation S(i);

selecting an exponent of summation S(i) from the multiplier output exponent of A(i)*B(i) and an exponent of summation S(i−1), by an exponent circuit of the multiply-and-accumulate unit, to generate exponent of summation S(i) in the radix-8 format; and

converting the sum and carry values and the exponent of summation S(i), in the radix-8 format, to a normalized floating point format.

11. The multiply-and-accumulate method of claim 10 , including comparing the exponent of summation S(i−1) to the multiplier output exponent of term A(i)*B(i) to generate exponent comparison signals; and

aligning, responsive to exponent comparison signals, the sum and carry values of summation S(i−1) with the significand of term A(i)*B(i) for addition in the carry-save adder.

12. The multiply-and-accumulate method of claim 11 , including

generating an overflow signal indicating an overflow condition for at least one of the sum and carry values of summation S(i−1); and

aligning, responsive to the overflow signal, the sum and carry values and exponent of summation S(i−1) with the multiplier output exponent and multiplier output significand of term A(i)*B(i) for addition in the carry-save adder.

13. The multiply-and-accumulate method of claim 11 , including:

generating a first condition signal indicating an overflow condition for at least one of the sum and carry values of summation S(i−1);

generating a second condition signal indicating that at least one of the sum and carry values of summation S(i−1) has more than or equal to a number 8 of extended sign bits; and

aligning, responsive to the first and second condition signals, the sum and carry values and exponent of summation S(i−1) with the multiplier output exponent and multiplier output significand of term A(i)*B(i) for addition in the carry-save adder.

14. The multiply-and-accumulate method of claim 10 , wherein multiplying operand A(i) and operand B(i) to generate term A(i)*B(i) includes using carry-save adders for partial products used to generate carry and sum values to generate higher order bits of the multiplier output significand and a ripple-carry adder for partial products used to generate lower order bits of the significand carry and sum outputs.

15. The multiply-and-accumulate method of claim 10 , wherein operand A(i) and operand B(i) are in a floating point format including an offset so that negative exponents are represented by positive binary numbers, and correcting for the offset includes inverting a most significant bit of one of the operand A(i) and operand B(i) and adding one to a carry-in input of an exponent adder circuit.

16. A multiply-and-accumulate unit, comprising:

a pipeline configured to execute a floating point, multiply-and-accumulate operation for a summation S(i) of terms A(i)*B(i), where (i) goes from 0 to N−1, and N is a number of terms in the summation, the pipeline including:

a multiplier pipeline stage including a multiplier circuit to provide multiplier significand and multiplier exponent values of a term A(i)*B(i) in response to first and second input operands, a radix-8 conversion circuit to convert the multiplier significand and multiplier exponent values of term A(i)*B(i) to radix-8 format, and a 2's complement conversion circuit to convert the multiplier significand value to a 2's complement representation for a multiplier output significand of term A(i)*B(i);

an accumulator stage including a significand circuit add the multiplier output significand of term A(i)*B(i) to fed back sum and carry values of summation S(i−1), and generate sum and carry values for summation S(i), the significand circuit including a 2's complement, carry-save adder, to generate sum and carry accumulator output significand values of summation S(i); and

an exponent circuit receiving the multiplier exponent value of term A(i)*B(i) and a fed back exponent value of summation S(i−1), to generate an accumulator output exponent value for summation S(i).

17. The multiply-and-accumulate unit of claim 16 , wherein:

the significand circuit of the accumulator stage includes a significand shifter, responsive to exponent comparison signals;

the exponent circuit is responsive to the exponent comparison signals; and

the pipeline includes exponent comparison circuits to compare the multiplier exponent value of term A(i)*B(i) to fed back exponent of summation S(i−1), to generate the exponent comparison signals used to generate summation S(i).

18. The multiply-and-accumulate unit of claim 17 , wherein the accumulator stage includes:

an overflow detector circuit, to generate a first condition signal indicating an overflow condition for at least one of the fed back sum and carry values of summation S(i−1);

a leading sign bit detector circuit, to generate a second condition signal indicating that at least one of the fed back sum and carry values of summation S(i−1) has more than or equal to a number 8 of extended sign bits; and

the exponent circuit and significand circuit are also responsive to the first condition signal and the second condition signal.

19. An accumulate unit, comprising:

a pipeline configured to execute a accumulate operation for a sequence of input floating point operands, the pipeline including:

a significand circuit receiving in a pipeline cycle an input significand in a 2's complement format and fed back sum and carry values of a fed back accumulator output, the significand circuit including a 2's complement, carry-save adder, to generate sum and carry accumulator output significand values of an accumulator output; and

an exponent circuit receiving in the pipeline cycle, an input exponent in radix-8 format and a fed back exponent value of the fed back accumulator output in the radix-8 format, to generate an accumulator output exponent value of the accumulator output.

20. The accumulate unit of claim 19 , wherein:

the significand circuit includes a significand shifter, responsive to exponent comparison signals, to align the input significand and the fed back sum and carry values for addition;

the exponent circuit is responsive to the exponent comparison signals to generate the accumulator output exponent value; and

the pipeline includes exponent comparison circuits to compare prior to the pipeline cycle the input exponent to the fed back exponent value to generate the exponent comparison signals.

21. The accumulate unit of claim 20 , wherein the pipeline includes:

an overflow detector circuit, to generate an overflow signal indicating an overflow condition for at least one of the fed back sum and carry values; and

the exponent circuit and significand circuit are also responsive to the overflow signal.

22. The accumulate unit of claim 20 , wherein the pipeline includes:

an overflow detector circuit, to generate a first condition signal indicating an overflow condition for at least one of the fed back sum and carry values;

a leading sign bit detector circuit, to generate a second condition signal indicating that at least one of the fed back sum and carry values has more than or equal to a number 8 of extended sign bits; and

the exponent circuit and significand circuit are also responsive to the first condition signal and the second condition signal.

Assignments (2)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 18, 2025
From: SAMBANOVA SYSTEMS, INC.
To: SILICON VALLEY BANK, A DIVISION OF FIRST-CITIZENS BANK & TRUST COMPANY, AS AGENT
Reel/Frame 070892/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2021
From: OKLOBDZIJA, VOJIN G.; KIM, MATTHEW M.
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 057122/0113 →
Continuity (4)
Provisional Application 63190749 · May 19, 2021
Provisional Application 63174460 · Apr 13, 2021
Provisional Application 63166221 · Mar 25, 2021
Provisional Application 61165073 · Mar 23, 2021
Cited By (7)
US 12,197,379 US 12,380,060 US 12,430,109 US 12,487,965 US 12,547,581 US 12,602,349 US 12,705,205