IP Library › Granted Patent US 12,724,588
Granted Patent B2
US 12,724,588 · App. 17/743,506 · Granted Sep 1, 2026

Programmable device for executing multiply accumulate operations via look up tables

Inventor: Thomas Eric Guttenberger (Keego Harbor, MI)
G06F7/5443
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 12,724,588
App. No.
17/743,506
Granted
Sep 1, 2026
Kind
B2
Abstract

The present disclosure relates to a computer processor configured to execute multiply-accumulate operations using dedicated multiplication and addition lookup tables (LUTs). The multiplication LUT generates low-precision, minimum-error products within a normalized range and provides addressing for the addition LUT. The addition LUT operates on same-sign, same-exponent inputs, applies balanced rounding, and determines a base-2 exponent of accumulated sums based on clock-cycle counts.

Claims (74)

1 . A computer processor for executing Multiply Accumulate operations comprising:

a multiplication lookup table (“LUT”) stored in memory for a multiplication of two numbers; and

an addition LUT stored in memory for an addition of the two numbers;

wherein the multiplication LUT registers assignments correspond to the two numbers of a multiplication operation;

wherein the multiplication LUT returns a number resulting from the multiplication operation with minimum absolute error as represented in low precision binary code;

wherein the multiplication LUT returns a number with a magnitude in a range from 0 to 1;

wherein the multiplication LUT returns a number associated with register addresses for addition LUTs;

wherein the addition LUT registers assignments correspond to the two numbers of the operation;

wherein the addition LUT is limited to operating on numbers of a same sign;

wherein the addition LUT is limited to operating on numbers of a same base 2 exponent;

wherein the addition LUT returns a number encoded in a range between 0 and an input exponent minus one;

wherein the addition LUT returns numbers rounded higher or lower in equal proportion for each encoding magnitude where an exact return encoding is not available;

wherein the addition LUT returns a number in the same encoding format as the two numbers used to determine register address;

wherein a count of clock cycles is used to calculate a base-2 exponent of a sum of a plurality of terms, each of the plurality of terms being in a range of zero (0) to one (1);

wherein, the base-2 exponent of the sum corresponds to an upper bound of a range of the sum expressed in powers of two (2);

wherein, the sum is calculated using the addition LUT;

wherein the count of clock cycles corresponds to a time spent in calculating the sum of the plurality of terms;

wherein the count of clock cycles is calculated from a count of the plurality of terms being added, a second count of clock cycles spent for each addition between the plurality of terms, and a static buffer;

wherein, the static buffer corresponds to a third count of additional clock cycles spent when a base-2 exponent of the sum increases.

2 . The processor of claim 1 , wherein the two numbers are in the range from −1 to 1.

3 . The processor of claim 1 , wherein input numbers are rounded to 7 bit, 8 bit, 9 bit, or 10 bit encodings.

4 . The processor of claim 1 , wherein the results of the multiplication operation are bifurcated according to sign to opposite ends of a number cache.

5 . The processor of claim 1 , wherein an addition operation between a final positive and negative sums is done via binary arithmetic.

6 . A computer system comprising a plurality of computer processors of claim 1 .

7 . The computer system of claim 6 , wherein input data are distributed among the processors and multiply accumulate functions are executed in parallel.

8 . The computer system of claim 6 , wherein the plurality of computer processors are caused to distribute a computational load among the processors and execute multiply accumulate functions in parallel.

9 . The computer system of claim 6 , wherein various encoding schemes for each individual processor are used.

10 . The computer system of claim 6 , wherein different numbers of bits for different levels of precision of encodings for each individual processor are used.

11 . A method comprising:

a multiplication lookup table (“LUT”) stored in memory for a multiplication of two numbers; and

an addition LUT stored in memory for an addition of the two numbers;

wherein the multiplication LUT register assignments correspond to the two input numbers of a multiplication operation;

wherein the multiplication LUT returns a number resulting from the multiplication operation with minimum absolute error as represented in low precision binary code;

wherein the multiplication LUT returns a number of with a magnitude in a range from 0 to 1;

wherein the multiplication LUT returns a number associated with register addresses for addition LUTs;

wherein the addition LUT register assignments correspond to the two input numbers of the operation;

wherein the addition LUT is limited to operating on numbers of a same sign;

wherein the addition LUT is limited to operating on numbers of a same base 2 exponent;

wherein the addition LUT returns a number encoded in a range between 0 and an input exponent minus one;

wherein the addition LUT returns numbers rounded higher or lower in equal proportion for each encoding magnitude where an exact return encoding is not available;

wherein the addition LUT returns a number in the same encoding format as the two numbers used to determine register address;

wherein a count of clock cycles is used to calculate a base-2 exponent of a sum of a plurality of terms, each of the plurality of terms being in a range of zero (0) to one (1);

wherein, the base-2 exponent of the sum corresponds to an upper bound of a range of the sum expressed in powers of two (2);

wherein, the sum is calculated using the addition LUT;

wherein the count of clock cycles corresponds to a time spent in calculating the sum of the plurality of terms;

wherein the count of clock cycles is calculated from a count of the plurality of terms being added, a second count of clock cycles spent for each addition between the plurality of terms, and a static buffer;

wherein, the static buffer corresponds to a third count of additional clock cycles spent when a base-2 exponent of the sum increases.

12 . The method of claim 11 , wherein the two numbers are in the range from −1 to 1.

13 . The method of claim 11 , wherein input numbers are rounded to 7 bit, 8 bit, 9 bit, or 10 bit encodings.

14 . The method of claim 11 , wherein the results of the multiplication operation are bifurcated according to sign to opposite ends of a number cache.

15 . The method of claim 11 , wherein an addition operation between a final positive and negative sums is done via binary arithmetic.

16 . A non-transitory machine-readable medium comprising:

a multiplication lookup table (“LUT”) stored in memory for a multiplication of two numbers; and

an addition LUT stored in memory for an addition of the two numbers;

wherein the multiplication LUT register assignments correspond to the two numbers of a multiplication operation;

wherein the multiplication LUT returns a number resulting from the multiplication operation with minimum absolute error as represented in low precision binary code;

wherein the multiplication LUT returns a number of magnitude in a range from 0 to 1;

wherein the multiplication LUT returns a number associated with register addresses for addition LUTs;

wherein the addition LUT register assignments correspond to the two input numbers of the operation;

wherein the addition LUT is limited to operating on numbers of a same sign;

wherein the addition LUT is limited to operating on numbers of a same base 2 exponent;

wherein the addition LUT returns a number encoded in a range between 0 and an input exponent minus one;

wherein the addition LUT returns numbers rounded higher or lower in equal proportion for each encoding magnitude where an exact return encoding is not available;

wherein the addition LUT returns a number in the same encoding format as the two numbers used to determine register address;

wherein a count of clock cycles is used to calculate a base-2 exponent of a sum of a plurality of terms, each of the plurality of terms being in a range of zero (0) to one (1);

wherein, the base-2 exponent of the sum corresponds to an upper bound of a range of the sum expressed in powers of two (2);

wherein, the sum is calculated using the addition LUT;

wherein the count of clock cycles corresponds to a time spent in calculating the sum of the plurality of terms;

wherein the count of clock cycles is calculated from a count of the plurality of terms being added, a second count of clock cycles spent for each addition between the plurality of terms, and a static buffer;

wherein, the static buffer corresponds to a third count of additional clock cycles spent when a base-2 exponent of the sum increases.

17 . The non-transitory machine-readable medium of claim 16 , wherein the two numbers are in the range from −1 to 1.

18 . The non-transitory machine-readable medium of claim 16 , wherein input numbers are rounded to 7 bit, 8 bit, 9 bit, or 10 bit.

19 . The non-transitory machine-readable medium of claim 16 , wherein the results of the multiplication operation are bifurcated according to sign to opposite ends of a number cache.

20 . The non-transitory machine-readable medium of claim 16 , wherein the addition operation between a final positive and negative sums is done via binary arithmetic.

Continuity (1)
Related Publication 20230367550A1 · Nov 16, 2023
References Cited (34)
US 5928316A · Wong · 1999 [cited by applicant]
US 6067382A · Maeda · 2000 [cited by examiner]
US 7752525B2 · Pisek · 2010 [cited by applicant]
US 8433744B1 · Harding · 2013 [cited by applicant]
US 8626814B2 · Peleg · 2014 [cited by applicant]
US 9069995B1 · Cronie · 2015 [cited by applicant]
US 9141131B2 · Felch · 2015 [cited by examiner]
US 9507565B1 · Streicher · 2016 [cited by applicant]
US 10180820B2 · Buchanan · 2019 [cited by applicant]
US 10505638B2 · Agazzi · 2019 [cited by applicant]
US 10657439B2 · Liu · 2020 [cited by examiner]
US 10698657B2 · Kang · 2020 [cited by applicant]
US 10748603B2 · Sumbul · 2020 [cited by applicant]
US 10872295B1 · Liu · 2020 [cited by examiner]
US 11016731B2 · Gradstein · 2021 [cited by applicant]
US 11120327B2 · Fishel · 2021 [cited by applicant]
US 11175892B2 · Langhammer · 2021 [cited by applicant]
US 11182128B2 · Okumura · 2021 [cited by applicant]
US 20140207838A1 · Danne · 2014 [cited by examiner]
US 20180232627A1 · Rozen · 2018 [cited by examiner]
US 20190370642A1 · Liu · 2019 [cited by examiner]
US 20200073636A1 · Cammarota · 2020 [cited by applicant]
US 20200387351A1 · Agrawal · 2020 [cited by applicant]
US 20210111722A1 · Kalsi · 2021 [cited by applicant]
US 20210311734A1 · Boswell · 2021 [cited by applicant]
US 20210350205A1 · Yan · 2021 [cited by examiner]
US 20210382691A1 · Kim · 2021 [cited by applicant]
US 20230144950A1 · Park · 2023 [cited by examiner]
EP 3059894 · 2018 [cited by applicant]
EP 2963539 · 2020 [cited by applicant]
Tim Dettmers, 8-BIT Approximations for Parallelism in Deep Learning, Published as a conference paper at ICLR 2016, 19, Feb. 2016, arXiv:1511.04561v4 [ca.NE]. [cited by applicant]
Yeonkweon Jeon, BIQGEMM: Matrix Multiplication with Lookup Table for Binary-Coding-baeed Quantized DNNs, Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, Nov.… [cited by applicant]
Xilinx data sheet, DS180 v2.6.1, manufacturer data sheet specification. [cited by applicant]
Xilinx specification sheet, v7.1 31 PG0&0, manufacturer data sheet apecification. [cited by applicant]