IP Library Granted Patent US 12,223,011
Granted Patent B1
US 12,223,011 · App. 18/519,531 · Granted Feb 11, 2025

Integer matrix multiplication engine using pipelining

Inventor: David John Simpson (San Jose, CA)
Assignee: MIPS Holding, Inc.
G06F17/16
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,223,011
App. No.
18/519,531
Granted
Feb 11, 2025
Kind
B1
Abstract

Techniques for data manipulation using integer matrix multiplication using pipelining are disclosed. A first integer matrix with dimensions m×k and a second integer matrix with dimensions k×n are obtained for matrix multiplication within a processor. The first and second integer matrices employ a two's complement variable radix point data representation. The first and second integer matrices are distilled into (j×j) submatrices. A first variable radix point format and an initial value for an accumulator register are configured dynamically. A first variable radix point format is configured dynamically for the first integer matrix and a second variable radix point format is configured dynamically for the second integer matrix. Multiply-accumulate operations are executed in a pipelined fashion on the (j×j) submatrices of the first integer matrix and the second integer matrix, where a third variable radix point format is configured for the result.

Claims (31)

1. A processor-implemented method comprising:

obtaining a first integer matrix with dimensions m×k and a second integer matrix with dimensions k×n for matrix multiplication within a processor, wherein the first integer matrix and the second integer matrix employ a two's complement variable radix point data representation;

distilling the first integer matrix and the second integer matrix into (j×j) submatrices;

configuring dynamically a first variable radix point format for the first integer matrix and a second variable radix point format for the second integer matrix; and

executing matrix-multiplication operations in a pipelined architecture on the (j×j) submatrices of the first integer matrix and the second integer matrix, wherein a third variable radix point format is configured for the result.

2. The method of claim 1 further comprising configuring dynamically at least one of a variable radix point format and an initial value for an accumulator register.

3. The method of claim 1 wherein the first variable radix point format and the second variable radix point format comprise a 16-bit data type.

4. The method of claim 1 wherein the first variable radix point format and the second variable radix point format comprise a 4-bit primitive data type.

5. The method of claim 1 wherein the first variable radix point format and the second variable radix point format comprise an 8-bit primitive data type.

6. The method of claim 1 further comprising outputting results of the matrix multiplication to a storage element.

7. The method of claim 1 wherein the first integer matrix and the second integer matrix comprise subsections of an o-dimensional tensor, wherein o is greater than 2.

8. The method of claim 1 wherein each of one or more multiply-accumulate (MAC) units used for matrix multiplication in the processor is configured to have an accumulator depth of m.

9. The method of claim 1 further comprising pipelining input elements to multiply-accumulate (MAC) units used for matrix multiplication in the processor through two input registers.

10. The method of claim 1 wherein performing N multiply-accumulate (MAC) operations in parallel reduces an amount of time taken to perform the N MAC operations from an order of magnitude of N 3 to an order of magnitude of N 2 .

11. The method of claim 1 further comprising adding one or more idle or no operation (NOP) cycles after completion of a matrix multiply operation before starting a next matrix multiply operation.

12. The method of claim 1 wherein a processor and memory subsystem is allocated as part of one or more clusters within a reconfigurable fabric to implement MAC units.

13. The method of claim 12 , wherein each cluster of the one or more clusters within the reconfigurable fabric is controlled by one or more circular buffers.

14. The method of claim 13 , wherein the one or more circular buffers are statically scheduled.

15. The method of claim 12 , wherein each cluster of the one or more clusters within the reconfigurable fabric comprises process elements, switching elements, or storage elements.

16. The method of claim 1 wherein input elements of the first matrix are taken from a row of the first matrix.

17. The method of claim 1 wherein input elements of the second matrix are taken from a column of the second matrix.

18. One or more non-transitory computer readable media embodying one or more instructions that are operable when executed by one or more processors to perform operations of:

obtaining a first integer matrix with dimensions m×k and a second integer matrix with dimensions k×n for matrix multiplication within a processor, wherein the first integer matrix and the second integer matrix employ a two's complement variable radix point data representation;

distilling the first integer matrix and the second integer matrix into (j×j) submatrices;

configuring dynamically a first variable radix point format for the first integer matrix and a second variable radix point format for the second integer matrix; and

executing matrix-multiplication operations in a pipelined architecture on the (j×j) submatrices of the first integer matrix and the second integer matrix, wherein a third variable radix point format is configured for the result.

19. A system comprising: a memory which stores instructions; and one or more processors coupled to the memory wherein the one or more processors, when executing the instructions, are configured to:

obtain a first integer matrix with dimensions m×k and a second integer matrix with dimensions k×n for matrix multiplication within a processor, wherein the first integer matrix and the second integer matrix employ a two's complement variable radix point data representation;

distill the first integer matrix and the second integer matrix into (j×j) submatrices;

configure dynamically a first variable radix point format for the first integer matrix and a second variable radix point format for the second integer matrix; and

execute matrix-multiplication operations in a pipelined architecture on the (j×j) submatrices of the first integer matrix and the second integer matrix, wherein a third variable radix point format is configured for the result.

Assignments (1)
CHANGE OF NAME Recorded May 8, 2024
From: WAVE COMPUTING, INC.
To: MIPS HOLDING, INC.
Reel/Frame 067355/0324 →
Continuity (16)
Continuation 17878011 · Jul 31, 2022
Continuation 16943252 · Jul 30, 2020
Continuation In Part 16835812 · Mar 31, 2020
Provisional Application 62907907 · Sep 30, 2019
Provisional Application 62898770 · Sep 11, 2019
Provisional Application 62898114 · Sep 10, 2019
Provisional Application 62893970 · Aug 30, 2019
Provisional Application 62894002 · Aug 30, 2019
Provisional Application 62887722 · Aug 16, 2019
Provisional Application 62887713 · Aug 16, 2019
Provisional Application 62882175 · Aug 2, 2019
Provisional Application 62874022 · Jul 15, 2019
Provisional Application 62857925 · Jun 6, 2019
Provisional Application 62856490 · Jun 3, 2019
Provisional Application 62850059 · May 20, 2019
Provisional Application 62827333 · Apr 1, 2019
References Cited (1)
US 11481472B2 · Simpson · 2022 [cited by examiner]