IP Library Granted Patent US 12,681,693
Granted Patent B1
US 12,681,693 · App. 17/657,294 · Granted Jul 14, 2026

Systolic array with parallel output rounding

Inventors: Nishith Desai (Austin, TX); Thomas A Volpe (Austin, TX)
Assignee: Amazon Technologies, Inc.
G06F7/49947G06F7/584G06F15/8046G06F2207/583
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,681,693
App. No.
17/657,294
Filed
Mar 30, 2022
Granted
Jul 14, 2026
Kind
B1
Art Unit
2182
USPC
708/200
Abstract

Systems and methods are provided to round the numbers produced by a systolic array. A rounder, including a plurality of random number generators, can receive a number from the systolic array. Each random number generator may be associated with a random number sequence and may generate a next random number in the random number sequence based on a state value representing a position within the random number sequence. Each random number generator can assume a state based on state value shared by the plurality of random number generators. Each random number generator can cycle through a number of positions within the random number sequence based on the relative position of the random number generator within the plurality of random number generators to generate a random number. The rounder can perform a rounding operation using the generated random number.

Claims (48)

1 . A systolic array processor configured to perform matrix multiplication between two input matrices and provide, as a result, a set of 32-bit values, wherein the systolic array processor comprises:

a rounder configured to perform a set of stochastic rounding operations to stochastically round individual 32-bit values of the set of 32-bit values to result in a set of 16-bit outputs, wherein individual stochastic rounding operations of the set of stochastic rounding operations rely on individual pseudo-random numbers of a set of pseudo-random numbers, wherein the rounder comprises:

a plurality of maximal length linear feedback shift registers (LFSRs) configured to deterministically generate the set of pseudo-random numbers, wherein each maximal length LFSR is associated with a pseudo-random number sequence and is configured to generate a next pseudo-random number in the pseudo-random number sequence based on a state value representing a position within the pseudo-random number sequence,

wherein, to generate the set of pseudo-random numbers, each maximal length LFSR is configured, for each subset of the set of pseudo-random numbers, to:

assume a state matching a current state value from a state value store shared among the plurality of maximal length LFSRs; and

cycle through a number of positions within the pseudo-random number sequence based on a relative position of the maximal length LFSR among the plurality of maximal length LFSRs to arrive at a resultant pseudo-random number to be included within the set of pseudo-random numbers,

wherein a final maximal length LFSR of the plurality of maximal length LFSRs is configured, for each subset of the set of pseudo-random numbers, to update the current state value of the state value store with a state of the final maximal length LFSR.

2 . The systolic array processor of claim 1 , wherein the systolic array processor further comprises a multiplexer configured to select the final maximal length LFSR from the plurality of maximal length LFSRs.

3 . The systolic array processor of claim 1 , wherein the rounder is further configured to generate rounded 32-bit values based on performing the set of stochastic rounding operations, wherein the systolic array processor further comprises a trailing bit reducer configured to:

reduce a quantity of bits representing significands of 32-bit values, and

generate 16-bit values based on reducing the quantity of bits representing the significands of the 32-bit values.

4 . The systolic array processor of claim 1 , wherein the rounder is further configured to select the plurality of maximal length LFSRs from a set of maximal length LFSRs based on a quantity of the plurality of maximal length LFSRs matching a selected number of parallel stochastic rounding operations.

5 . An integrated circuit comprising:

a rounder configured to:

receive a first number:

select a first random number generator from a plurality of random number generators based on a first relative numerical position of the first random number generator among the plurality of random number generators, wherein the plurality of random number generators are associated with a random number sequence and are configured to generate a next random number in the random number sequence based on a respective state value representing a position within the random number sequence, wherein each of the plurality of random number generators is configured to:

assume a state based on a current state value from a state value store shared among the plurality of random number generators, and

cycle through a number of positions within the random number sequence corresponding to a relative numerical position of the random number generator among the plurality of random number generators to arrive at a resultant random number, wherein each random number generator of the plurality of random number generators is initialized with the same state value and cycled through a different number of state values after the same state value; and

perform a rounding operation to round the first number based on a resultant random number generated by the first random number generator.

6 . The integrated circuit of claim 5 , wherein the rounder is further configured to generate one or more rounded numbers based on performing the rounding operation, wherein the integrated circuit further comprises a trailing bit reducer configured to:

reduce a quantity of bits representing the one or more rounded numbers, and

generate one or more reduced numbers based on reducing the quantity of bits representing the one or more rounded numbers.

7 . The integrated circuit of claim 5 , wherein the rounder is further configured to select the plurality of random number generators from a set of random number generators based on a quantity of the plurality of random number generators matching a selected number of parallel rounding operations.

8 . The integrated circuit of claim 5 , wherein a final random number generator of the plurality of random number generators is configured to update the current state value of the state value store with a state of a final random number generator of the plurality of random number generators.

9 . The integrated circuit of claim 8 , wherein the integrated circuit further comprises a multiplexer configured to select the final random number generator from the plurality of random number generators.

10 . The integrated circuit of claim 8 , wherein the rounder obtains an updated state value, wherein the integrated circuit further comprises a multiplexer configured to select the state of the final random number generator or the updated state value.

11 . The integrated circuit of claim 8 , wherein the rounder obtains an updated state value, wherein the rounder is configured to update the current state value of the state value store with the updated state value.

12 . The integrated circuit of claim 5 , wherein the rounding operation comprises a stochastic rounding operation.

13 . The integrated circuit of claim 5 , wherein each of the plurality of random number generators is configured to generate one or more pseudo-random numbers, wherein the resultant random number generated by the first random number generator comprises a pseudo-random number.

14 . The integrated circuit of claim 5 , wherein:

the rounder is further configured to convert an input floating-point number to an output floating-point number by reducing a number of significand bits in the input floating-point number to result in the output floating-point number, the output floating-point number having fewer significand bits than the input floating-point number.

15 . The integrated circuit of claim 5 , wherein:

the rounder is further configured to convert an input floating-point number to an output floating-point number by reducing a number of significand bits in the input floating-point number to result in the output floating-point number, the output floating-point number having fewer significand bits than the input floating-point number,

wherein a processing element of a set of processing elements is configured to receive as input numbers matching a bit format of the output floating-point number.

16 . The integrated circuit of claim 5 , wherein:

the rounder is further configured to convert an input floating-point number to an output floating-point number by reducing a number of significand bits in the input floating-point number to result in the output floating-point number, the output floating-point number having fewer significand bits than the input floating-point number,

wherein a processing element of a set of processing elements is configured to output floating point numbers matching a bit format of the input floating-point number.

17 . The integrated circuit of claim 5 , wherein the rounding operation is a first rounding operation, wherein the rounder is further configured to:

receive a second number;

select a second random number generator from a plurality of random number generators; and

perform a second rounding operation to round the second number based on a resultant random number generated by the second random number generator.

18 . The integrated circuit of claim 5 , wherein to select the first random number generator, the rounder is further configured to select the first random number generator further based on:

a relative position of the first number in a set of numbers being rounded in parallel.

19 . A method, comprising:

receiving a first number;

identifying a first random number generator of a plurality of random number generators based on a first relative numerical position of the first random number generator among the plurality of random number generators, wherein each of the plurality of random number generators is associated with a random number sequence and is configured to generate a next random number in the random number sequence based on a respective state value representing a position within the random number sequence, wherein each of the plurality of random number generators is configured to assume a state based on current state value shared among the plurality of random number generators and cycle through a number of positions within the random number sequence corresponding to a relative numerical position of the random number generator among the plurality of random number generators to arrive at a resultant random number, wherein each random number generator of the plurality of random number generators is initialized with the same state value and cycled through a different number of state values after the same state value; and

performing a rounding operation to round the first number based on a resultant random number generated by the first random number generator.

20 . The method of claim 19 , further comprising selecting the plurality of random number generators from a set of random number generators based on a quantity of the plurality of random number generators matching a selected number of parallel rounding operations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2023
From: DESAI, NISHITH; VOLPE, THOMAS A
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 065127/0077 →
References Cited (153)
US 4937774A · Malinowski · 1990 [cited by applicant]
US 5138695A · Means et al. · 1992 [cited by applicant]
US 5151953A · Landeta · 1992 [cited by applicant]
US 5168499A · Peterson et al. · 1992 [cited by applicant]
US 5659781A · Larson · 1997 [cited by applicant]
US 5692147A · Larsen et al. · 1997 [cited by applicant]
US 5764556A · Stiles · 1998 [cited by applicant]
US 5844925A · Dent · 1998 [cited by applicant]
US 6205462B1 · Wyland et al. · 2001 [cited by applicant]
US 6463453B1 · Dang · 2002 [cited by applicant]
US 6480872B1 · Choquette · 2002 [cited by applicant]
US 6594680B1 · Gu · 2003 [cited by examiner]
US 6801924B1 · Green et al. · 2004 [cited by applicant]
US 7724261B2 · Thekkath et al. · 2010 [cited by applicant]
US 7814137B1 · Mauer · 2010 [cited by applicant]
US 8184696B1 · Chirila-Rus et al. · 2012 [cited by applicant]
US 8549055B2 · Streicher et al. · 2013 [cited by applicant]
US 8610729B2 · Airey et al. · 2013 [cited by applicant]
US 8924455B1 · Barman et al. · 2014 [cited by applicant]
US 9552189B1 · Langhammer et al. · 2017 [cited by applicant]
US 9805304B2 · Ross · 2017 [cited by applicant]
US 10769238B2 · Chen et al. · 2020 [cited by applicant]
US 10790830B1 · Pugh et al. · 2020 [cited by applicant]
US 10817260B1 · Huang et al. · 2020 [cited by applicant]
US 10872295B1 · Liu et al. · 2020 [cited by applicant]
US 10879904B1 · Gunter et al. · 2020 [cited by applicant]
US 10915297B1 · Halutz et al. · 2021 [cited by applicant]
US 11049013B1 · Donet et al. · 2021 [cited by applicant]
US 11088694B1 · Gunter et al. · 2021 [cited by applicant]
US 11113233B1 · Volpe · 2021 [cited by applicant]
US 11232062B1 · Volpe et al. · 2022 [cited by applicant]
US 11308026B1 · Volpe et al. · 2022 [cited by applicant]
US 11308027B1 · Volpe et al. · 2022 [cited by applicant]
US 11422773B1 · Volpe et al. · 2022 [cited by applicant]
US 11467806B2 · Elmer · 2022 [cited by applicant]
US 11762803B2 · Volpe et al. · 2023 [cited by applicant]
US 11816446B2 · Elmer et al. · 2023 [cited by applicant]
US 11842169B1 · Elmer · 2023 [cited by applicant]
US 11880682B2 · Myer et al. · 2024 [cited by applicant]
US 12067375B2 · Emer · 2024 [cited by applicant]
US 12182064B2 · Volpe et al. · 2024 [cited by applicant]
US 12423058B2 · Meyer et al. · 2025 [cited by applicant]
US 20030081489A1 · Scheuerlein et al. · 2003 [cited by applicant]
US 20040044896A1 · Kelley et al. · 2004 [cited by applicant]
US 20040139274A1 · Hui · 2004 [cited by applicant]
US 20060149803A1 · Siu et al. · 2006 [cited by applicant]
US 20070028076A1 · Wezelenburg · 2007 [cited by applicant]
US 20070185953A1 · Prokopenko et al. · 2007 [cited by applicant]
US 20090083519A1 · Yang et al. · 2009 [cited by applicant]
US 20090113169A1 · Yang et al. · 2009 [cited by applicant]
US 20090248769A1 · Chua · 2009 [cited by applicant]
US 20100281235A1 · Vorbach et al. · 2010 [cited by applicant]
US 20110025900A1 · Kondo · 2011 [cited by applicant]
US 20110058569A1 · Harrand · 2011 [cited by applicant]
US 20110225116A1 · Gupta et al. · 2011 [cited by applicant]
US 20160004506A1 · Elmer · 2016 [cited by applicant]
US 20160210121A1 · Gammel et al. · 2016 [cited by applicant]
US 20160342890A1 · Young · 2016 [cited by applicant]
US 20160342892A1 · Ross · 2016 [cited by applicant]
US 20160358069A1 · Brothers et al. · 2016 [cited by applicant]
US 20170010863A1 · Nystad · 2017 [cited by applicant]
US 20170097824A1 · Elmer et al. · 2017 [cited by applicant]
US 20170103311A1 · Henry et al. · 2017 [cited by applicant]
US 20170115958A1 · Langhammer · 2017 [cited by applicant]
US 20170235515A1 · Lea et al. · 2017 [cited by applicant]
US 20180036165A1 · Fallon · 2018 [cited by applicant]
US 20180052660A1 · Lutz · 2018 [cited by applicant]
US 20180101361A1 · Kawai · 2018 [cited by examiner]
US 20180121168A1 · Langhammer · 2018 [cited by applicant]
US 20180164866A1 · Turakhia et al. · 2018 [cited by applicant]
US 20180218518A1 · Yan et al. · 2018 [cited by applicant]
US 20180225116A1 · Henry et al. · 2018 [cited by applicant]
US 20180314671A1 · Zhang et al. · 2018 [cited by applicant]
US 20180315398A1 · Kaul et al. · 2018 [cited by applicant]
US 20180336163A1 · Phelps et al. · 2018 [cited by applicant]
US 20180336164A1 · Phelps et al. · 2018 [cited by applicant]
US 20180336165A1 · Phelps et al. · 2018 [cited by applicant]
US 20190004997A1 · Cohen et al. · 2019 [cited by applicant]
US 20190012295A1 · Yinger et al. · 2019 [cited by applicant]
US 20190026077A1 · Manzo · 2019 [cited by applicant]
US 20190041961A1 · Desai et al. · 2019 [cited by applicant]
US 20190079801A1 · Lyuh et al. · 2019 [cited by applicant]
US 20190138882A1 · Choi et al. · 2019 [cited by applicant]
US 20190236049A1 · Vantrease et al. · 2019 [cited by applicant]
US 20190294413A1 · Vantrease et al. · 2019 [cited by applicant]
US 20190311243A1 · Whatmough et al. · 2019 [cited by applicant]
US 20190377549A1 · Alben et al. · 2019 [cited by applicant]
US 20190385050A1 · Wang et al. · 2019 [cited by applicant]
US 20200026494A1 · Langhammer et al. · 2020 [cited by applicant]
US 20200026497A1 · Park et al. · 2020 [cited by applicant]
US 20200117988A1 · Arthur et al. · 2020 [cited by applicant]
US 20200150958A1 · Ahmed · 2020 [cited by applicant]
US 20200159809A1 · Catthoor et al. · 2020 [cited by applicant]
US 20200192701A1 · Horowitz et al. · 2020 [cited by applicant]
US 20200201576A1 · Yudanov et al. · 2020 [cited by applicant]
US 20200226473A1 · Sharma et al. · 2020 [cited by applicant]
US 20200285605A1 · Nam · 2020 [cited by applicant]
US 20200302298A1 · Van et al. · 2020 [cited by applicant]
US 20200349106A1 · Ovsiannikov · 2020 [cited by applicant]
US 20200380370A1 · Lie · 2020 [cited by examiner]
US 20210019591A1 · Venkatesh et al. · 2021 [cited by applicant]
US 20210042087A1 · Pugh et al. · 2021 [cited by applicant]
US 20210064985A1 · Sun et al. · 2021 [cited by applicant]
US 20210072955A1 · Mellempudi et al. · 2021 [cited by applicant]
US 20210089316A1 · Rash et al. · 2021 [cited by applicant]
US 20210091794A1 · Snelgrove et al. · 2021 [cited by applicant]
US 20210103429A1 · Nair et al. · 2021 [cited by applicant]
US 20210150770A1 · Appu et al. · 2021 [cited by applicant]
US 20210157548A1 · Elmer · 2021 [cited by applicant]
US 20210157549A1 · Elmer et al. · 2021 [cited by applicant]
US 20210390367A1 · Liu et al. · 2021 [cited by applicant]
US 20220019431A1 · Kaul et al. · 2022 [cited by applicant]
US 20220334798A1 · Lin et al. · 2022 [cited by applicant]
US 20220350567A1 · Pan et al. · 2022 [cited by applicant]
US 20220350775A1 · Volpe · 2022 [cited by applicant]
US 20230004384A1 · Meyer et al. · 2023 [cited by applicant]
US 20230004523A1 · Meyer et al. · 2023 [cited by applicant]
US 20230010054A1 · Elmer · 2023 [cited by applicant]
US 20230236799A1 · Waters · 2023 [cited by examiner]
US 20230385233A1 · Volpe et al. · 2023 [cited by applicant]
US 20240361986A1 · Elmer · 2024 [cited by applicant]
CN 107168678 · 2017 [cited by applicant]
CN 108804077 · 2018 [cited by applicant]
CN 114868108A · 2022 [cited by applicant]
CN 115039067A · 2022 [cited by applicant]
CN 115935875 · 2023 [cited by applicant]
EP 3396524A1 · 2018 [cited by applicant]
EP 4066101A1 · 2022 [cited by applicant]
EP 4066100A1 · 2024 [cited by applicant]
KR 1020090030498 · 2009 [cited by applicant]
WO 199410638A1 · 1994 [cited by applicant]
WO 2021108644A1 · 2021 [cited by applicant]
WO 2021108660A1 · 2021 [cited by applicant]
WO 2023278475A1 · 2023 [cited by applicant]
Arnould, et al., A Systolic Array Computer., 1985, IEEE., pp. 232-235. (Year: 1985). [cited by applicant]
Bao, et al., A Reconfigurable Macro-Pipelined Systolic Accelerator Architecture, 2011, IEEE., 6 pages. (Year: 2011). [cited by applicant]
Dick, Computing the Discrete Fourier Transform on FPGA Based Systolic Arrays, 1996, Proc of the 4th Intl. ACM Symposium on Field Programmable Gate Arrays, 7 pages. (Year: 1996). [cited by applicant]
Garland, “Low Complexity Multiple Accumulate Units for Convolutional Neural Networks with Weight Sharing,” ACM, 24 pages (2018). [cited by applicant]
Grout, “Chapter 5—Introduction to Digital Logic Design,” Digital Systems Design with FPGAS and CPLDS, Ed. Burlington: Newnes, 2008, p. 217-331. [cited by applicant]
Henry, “Leveraging the bfloat16 Artificial Intelligence Datatype for Higher-Precision Computations,” 2019 IEEE 26th Symposium on Computer Arithmetic, 2019, p. 69-76. [cited by applicant]
Hu, et al., Systolic Arrays, 2018, SpringerLink, Handbook or Signal Processing Systems, pp. 939-977. (Year: 2018). [cited by applicant]
International Search Report and Written Opinion in PCT Application No. PCT/US2022/035353, mailed Oct. 14, 2022, 26 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Patent Application No. PCT/US2020/062337, mailed on Mar. 4, 2021, 8 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Patent Application No. PCT/US2020/062356, mailed on Mar. 4, 2021, 8 pages. [cited by applicant]
Kung, “Why Systolic Architectures,” IEEE pp. 37-48 (1982). [cited by applicant]
Kung, et al., “Design Algorithms for VLSI Systems,” Dept. of Computer Science, Carnegie Mellon Univ, Pittsburgh (Jan. 1979). [cited by applicant]
Kung, et al., “Packing Sparse Convolutional Neural Networks for Efficient Systolic Array Implementations: Column Combining under Joint Optimization,” ACM. pp. 821-834 (2019). [cited by applicant]
Kung, et al., “Systolic Arrays for VLSI,” Dept. of Computer Science, Carnegie Mellon, Pittsburgh (Apr. 1978). [cited by applicant]
Liu, et al., An Energy-Efficient Systolic Pipeline Architecture for Binary Conbolutional Neural Network, 2019, IEEE, 4 pages. (Year: 2019). [cited by applicant]
Pedram, et al., A High performance, Low Power Linear Algebra Core, 2011, IEEE, pp. 35-42 (Year 2011). [cited by applicant]
Tannenbaum, Structured Computer Organization, 2nd Edition, 1984, Prentice-Hall, Inc., p. 1-5. [cited by applicant]
Wah, et al., Systolic Programming for Dynamic Programming Problems, 1999, Circuits Systems Signal Processing vol. 7, No. 2, pp. 119-149. (Year:1999). [cited by applicant]
Yang, et al., “Systolic Array Based Accelerator and Algorithm Mapping for Deep Learning Algorithms”, Network and Parallel Computing, 2018, pp. 153-158. [cited by applicant]