IP Library Granted Patent US 12,406,021
Granted Patent B2
US 12,406,021 · App. 18/122,701 · Granted Sep 2, 2025

Systems and methods for mapping matrix calculations to a matrix multiply accelerator

Inventors: David Fick (Austin, TX); Michael Henry (Austin, TX); Laura Fick (Austin, TX); Malav Parikh (Austin, TX); Skylar Skrzyniarz (Austin, TX); Scott Johnson (Austin, TX); Pei-Ci Wu (Austin, TX); Andrew Morten (Austin, TX)
Assignee: Mythic, Inc.
G06F17/16G06N20/00
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,406,021
App. No.
18/122,701
Granted
Sep 2, 2025
Kind
B2
Abstract

Systems and methods of configuring a fixed memory array of an integrated circuit with coefficients of one or more applications includes identifying a utilization constraint type of the fixed memory array from a plurality of distinct utilization constraint types based on computing attributes of the one or more applications; identifying at least one coefficient mapping technique from a plurality of distinct coefficient mapping techniques that addresses the utilization constraint type; configuring the fixed memory array according to the at least one coefficient mapping technique, wherein configuring the array includes at least setting within the array the coefficients of the one or more applications in an arrangement prescribed by the at least one coefficient mapping technique that optimizes a computational utilization of the fixed memory array.

Claims (71)

1. A method of configuring an integrated circuit with coefficient values, the method comprising:

identifying a coefficient mapping technique based on attributes of two or more computational algorithms;

configuring a plurality of processing circuits of the integrated circuit with coefficient values of the two or more computational algorithms based on the identified coefficient mapping technique,

wherein the identified coefficient mapping technique includes mapping a set of coefficients of a first algorithm of the two or more computational algorithms to a first set of processing circuits of the plurality of processing circuits and mapping a second set of coefficients of a second algorithm of the two or more computational algorithms to a second set of processing circuits of the plurality of processing circuits, and

wherein identifying the coefficient mapping technique is based on identifying that a computation of at least one of the sets of coefficients of the first algorithm and the second algorithm requires fewer outputs than an output capacity of the plurality of processing circuits.

2. The method according to claim 1 , further comprising:

if the first set of processing circuits and the second set of processing circuits have (a) nonoverlapping input ports and (b) overlapping output ports:

configuring the integrated circuit to execute, at runtime, one of the first set of processing circuits and the second set of processing circuits while deactivating one of the first set of processing circuits and the second set of processing circuits that is not executed.

3. The method according to claim 1 , further comprising:

at runtime, executing one of the first set of processing circuits and the second set of processing circuits while deactivating one of the first set of processing circuits and the second set of processing circuits that is not executed.

4. The method according to claim 1 , wherein

identifying the coefficient mapping technique is based on identifying that a computation of the sets of coefficients of the first algorithm and the second algorithm in combination require fewer inputs and fewer outputs than an input capacity and a plurality output capacity of the plurality of processing circuits.

5. The method according to claim 1 , wherein:

regions of the sets of coefficients of the first algorithm and the second algorithm of the plurality of processing circuits are non-overlapping regions and each have nonoverlapping input ports and nonoverlapping output ports;

the method further comprises:

configuring the integrated circuit to execute, at runtime, the regions of the sets of coefficients of the first algorithm and the second algorithm in parallel.

6. The method according to claim 1 , wherein

regions of the sets of coefficients of the first algorithm and the second algorithm of the plurality of processing circuits have partially overlapping input regions are and have nonoverlapping output ports.

7. The method according to claim 1 , wherein:

the set of coefficients of each of the first algorithm and the second algorithm are arranged in parallel and are arranged along nonoverlapping output ports; and

configuring the integrated circuit to implement, at runtime, an input/output handling technique that includes:

setting a multiplexor to serially output computation results of each of the first algorithm and the second algorithm via an overlapping output circuit.

8. The method according to claim 1 , further comprising:

configuring the plurality of processing circuits to produce positive outputs and produce negative logical outputs based on input signals into the plurality of processing circuits includes:

configuring one or more plurality coefficient input locations within the plurality of processing circuits with a positive line that passes an input signal with a positive sign and a negative line that passes an input signal with a negative sign; and

setting a coefficient along each of the positive line and the negative line of the one or more plurality coefficient input locations.

9. The method according to claim 1 , wherein:

if an input vector into the plurality of processing circuits includes a greater bit-size than a bit-size of a plurality coefficient input location within the plurality of processing circuits, the coefficient mapping technique includes:

prior to receiving bits of an input vector having oversized input bits, shifting coefficients of an undersized plurality coefficient input location to multiple rows of the plurality of processing circuits,

the method further comprising:

configuring the integrated circuit to:

spread, at runtime, bits of the input vector over the multiple rows of the plurality of processing circuits; and

sum, at runtime, outputs of the multiple rows of the plurality of processing circuits that share a coefficient value that is overlapping.

10. The method according to claim 1 , wherein:

if an input vector into the plurality of processing circuits includes a greater bit-size than a bit-size of a coefficient input location within the plurality of processing circuits, configuring the integrated circuit to implement, at runtime, an input/output handling technique that includes:

partitioning bits of the input vector having oversized input bits over multiple calculations of the plurality of processing circuits in a serial manner or stepped fashion; and

the method further comprising:

configuring the integrated circuit to shift, at runtime, outputs of the multiple calculations of the plurality of processing circuits into an alignment prior to summing output values of the multiple calculations.

11. A method of configuring an integrated circuit with coefficient values, the method comprising:

identifying a coefficient mapping technique based on attributes of a plurality of distinct algorithms;

configuring the plurality of processing circuits of the integrated circuit with coefficient values of the plurality of distinct algorithms based on the identified coefficient mapping technique, wherein the identified coefficient mapping techniques include:

mapping coefficients of each of the plurality of distinct algorithms to a plurality of distinct regions of the plurality of processing circuits; and

configuring the integrated circuit to serially execute, at runtime, each of the plurality of distinct regions of the plurality of processing circuits.

12. The method according to claim 11 , further comprising:

configuring the integrated circuit to select, at runtime, one or more of the plurality of distinct regions having nonoverlapping output ports for active execution and disabling an execution of remaining distinct regions of the plurality of distinct regions.

13. The method according to claim 11 , wherein

identifying the coefficient mapping technique is based on identifying that a combination of the plurality of distinct algorithms require fewer inputs and fewer outputs than an input capacity and an output capacity of the plurality of processing circuits.

14. A method of configuring an integrated circuit with coefficient values, the method comprising:

identifying a coefficient mapping technique based on attributes of two or more computational algorithms;

configuring the plurality of processing circuits of the integrated circuit with coefficient values of the two or more computational algorithms based on the identified coefficient mapping technique, wherein the identified coefficient mapping techniques includes:

partitioning coefficient values of the two or more computational algorithms to multiple distinct pluralities of processing circuits;

applying an input vector to each of the multiple distinct pluralities of processing circuits; and

combining outputs of the multiple distinct pluralities of processing circuits.

15. The method according to claim 14 , wherein

identifying the coefficient mapping technique is based on identifying that a computation of at least one of the two or more computational algorithms require greater inputs than an input capacity and/or greater outputs than an output capacity of the plurality of processing circuits.

16. The method according to claim 14 , further comprising:

configuring the plurality of processing circuits to produce positive outputs and produce negative logical outputs based on input signals into the plurality of processing circuits includes:

configuring one or more plurality coefficient input locations within the plurality of processing circuits with a positive line that passes an input signal with a positive sign and a negative line that passes an input signal with a negative sign; and

setting a coefficient along each of the positive line and the negative line of the one or more plurality coefficient input locations.

17. The method according to claim 14 , wherein:

if an input vector into the plurality of processing circuits includes a greater bit-size than a bit-size of a coefficient input location within the plurality of processing circuits, the coefficient mapping technique includes:

prior to receiving bits of an input vector having oversized input bits, shifting coefficients of an undersized plurality coefficient input location to multiple rows of the plurality of processing circuits,

the method further comprising:

configuring the integrated circuit to:

spread, at runtime, bits of the input vector over the multiple rows of the plurality of processing circuits; and

sum, at runtime, outputs of the multiple rows of the plurality of processing circuits that share a coefficient value that is overlapping.

18. The method according to claim 14 , wherein:

if an input vector into the plurality of processing circuits includes a greater bit-size than a bit-size of a coefficient input location within the plurality of processing circuits, configuring the integrated circuit to implement, at runtime, an input/output handling technique that includes:

partitioning bits of the input vector having oversized input bits over multiple calculations of the plurality of processing circuits in a serial manner or stepped fashion; and

the method further comprising:

configuring the integrated circuit to shift, at runtime, outputs of the multiple calculations of the plurality of processing circuits into an alignment prior to summing output values of the multiple calculations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2023
From: FICK, DAVID; HENRY, MICHAEL; FICK, LAURA; PARIKH, MALAV; SKRZYNIARZ, SKYLAR; JOHNSON, SCOTT; WU, PEI-CI; MORTEN, ANDREW
To: MYTHIC, INC.
Reel/Frame 063030/0609 →
Continuity (6)
Continuation 17193339 · Mar 5, 2021
Continuation 16683515 · Nov 14, 2019
Continuation 16402090 · May 2, 2019
Continuation 16392979 · Apr 24, 2019
Continuation 16222277 · Dec 17, 2018
Related Publication 20230222174A1 · Jul 13, 2023
References Cited (41)
US 4697247A · Grinberg et al. · 1987 [cited by applicant]
US 5336937A · Sridhar et al. · 1994 [cited by applicant]
US 10169296B2 · Korthikanti · 2019 [cited by applicant]
US 20120124333A1 · Master et al. · 2012 [cited by applicant]
US 20140344194A1 · Lee et al. · 2014 [cited by applicant]
US 20150199963A1 · Maaninen · 2015 [cited by applicant]
US 20150278681A1 · Saxena · 2015 [cited by applicant]
US 20160283842A1 · Pescianschi · 2016 [cited by applicant]
US 20160342722A1 · Sentieys et al. · 2016 [cited by applicant]
US 20160342890A1 · Young · 2016 [cited by applicant]
US 20160342891A1 · Ross et al. · 2016 [cited by applicant]
US 20170040054A1 · Friedman et al. · 2017 [cited by applicant]
US 20170091621A1 · Gokmen et al. · 2017 [cited by applicant]
US 20170228345A1 · Gupta et al. · 2017 [cited by applicant]
US 20170228414A1 · Shazeer et al. · 2017 [cited by applicant]
US 20170330617A1 · Friedman et al. · 2017 [cited by applicant]
US 20180341517A1 · Takeshige · 2018 [cited by applicant]
CN 1144434A · 1997 [cited by applicant]
CN 1253340A · 2000 [cited by applicant]
CN 102119494A · 2011 [cited by applicant]
CN 103605729A · 2014 [cited by applicant]
CN 103842923A · 2014 [cited by applicant]
CN 103984527A · 2014 [cited by applicant]
CN 105144625A · 2015 [cited by applicant]
CN 107066423A · 2017 [cited by applicant]
EP 0450526A2 · 1991 [cited by applicant]
TW 200745879A · 2007 [cited by applicant]
WO 2016030230A1 · 2016 [cited by applicant]
WO 2016186811A1 · 2016 [cited by applicant]
WO 2017155544A1 · 2017 [cited by applicant]
WO 2017171769A1 · 2017 [cited by applicant]
Chinese Application No. 201880081673.0, Chinese Office Action mailed May 15, 2023, 16 pages. [cited by applicant]
Venkataramani et al., “Scaledeep: A Scalable Compute Architecture for Learning and Evaluating Deep Networks,” ISCA '17, Jun. 24-28, 2017 (Year: 2017). [cited by applicant]
Liu et al., A Course-Grained Reconfigurable Processor for Sequencing and Phylogenetic Algorithms in Bioinformatics, 2011 International Conference on Reconfigurable Computing and FPGAs, IEEE Computer Society, 2011 (Year:… [cited by applicant]
Zidan et al., Field-Programmable Crossbar Array (FPCA) for Reconfigurable Computing, IEEE Transactions on Multi-Scale Computing Systems, vol. 4, No. 4, Jun. 28, 2017 (Year: 2017). [cited by applicant]
International Search Report and the Written Opinion of the International Searching Authority, Application No. PCTUS18/065,991, dated Mar. 8, 2019. [cited by applicant]
Demler, “Mythic Multiplies in a Flash, Analog In-Memory Computing Eliminates DRAM Read/Write Cycles”, The Linley Group Microprocessor report, Aug. 27, 2018. [cited by applicant]
Wang et al., “DLAU: A Scalable Deep Learning Accelerator Unit on FPGA”, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, May 23, 2016. [cited by applicant]
Taiwan Application No. 107145728, Taiwan Office mailed May 3, 2022, 6 pages. [cited by applicant]
European Application No. 18892166.2, Extended European Search Report mailed Nov. 29, 2021, 9 pages. [cited by applicant]
Wang et al., “Programmable Synaptic Weights for an a VLSI Network of Spiking Neurons”, IEEE International Symposium on Circuits and Systems, 2006, pp. 4531-4534. [cited by applicant]