IP Library Granted Patent US 11,599,601
Granted Patent B2
US 11,599,601 · App. 17/210,293 · Granted Mar 7, 2023

Low latency matrix multiply unit

Inventors: Andrew Everett Phelps (Middleton, WI); Norman Paul Jouppi (Palo Alto, CA)
Assignee: Google LLC
G06F17/16G06F5/015G06F9/30101G06F15/8046G06F9/30032G06N3/04G06N3/08
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,599,601
App. No.
17/210,293
Granted
Mar 7, 2023
Kind
B2
Abstract

Methods, systems, and apparatus for a matrix multiply unit implemented as a systolic array of cells are disclosed. Each cell of the matrix multiply includes: a weight matrix register configured to receive a weight input from either a transposed or a non-transposed weight shift register; a transposed weight shift register configured to receive a weight input from a horizontal direction to be stored in the weight matrix register; a non-transposed weight shift register configured to receive a weight input from a vertical direction to be stored in the weight matrix register; and a multiply unit that is coupled to the weight matrix register and configured to multiply the weight input of the weight matrix register with a vector data input in order to obtain a multiplication result.

Claims (50)

1. A cell of a plurality of cells arranged in an array of a matrix multiply unit, the cell comprising:

a weight matrix register configured to receive a weight input from a plurality of weight storing registers, wherein each of the plurality of weight storing registers is configured to receive a respective weight input from a respective direction of the array, wherein the respective directions comprise a first direction of the array and a second direction of the array different from the first direction; and

a multiply unit configured to receive the weight input from the weight matrix register and generate a multiplication result based on the received weight input and another input data.

2. The cell of claim 1 , wherein the other input data comprises a vector data input, and wherein the multiplication result is a part of a plurality of neural network computations.

3. The cell of claim 2 , wherein the multiply unit is configured to receive another weight input from the weight matrix register, and multiply the other received weight input with another vector data input to generate another multiplication result, and wherein the other multiplication result is another part of the plurality of neural network computations.

4. The cell of claim 1 , wherein the array is a systolic array of cells.

5. The cell of claim 1 , wherein:

the array has a two-dimensional format;

the first direction of the array is the first direction in the two-dimensional format; and

the second direction of the array is the second direction in the two-dimensional format.

6. The cell of claim 1 , further comprising a multiplexer configured to:

select the weight input from at least two respective weight inputs each stored in a corresponding weight storing register; and

send the selected weight input to the weight matrix register.

7. The cell of claim 1 , wherein the plurality of weight storing registers comprise a transposed weight shift register and a non-transposed weight shift register physically separate from the transposed weight shift register.

8. The cell of claim 1 , wherein the plurality of weight storing registers comprise:

a first weight storing register configured to receive a first weight input over a first wired path from a first cell of the plurality of cells that is along the first direction; and

a second weight storing register configured to receive a second weight input over a second wired path from a second cell of the plurality of cells that is along the second direction;

wherein the weight input is one of the first weight input and the second weight input.

9. A method comprising:

receiving, by a weight matrix register of a cell of a plurality of cells arranged in an array of a matrix multiply unit, a weight input from a plurality of weight storing registers, wherein each of the plurality of weight storing registers is configured to receive a respective weight input from a respective direction of the array, wherein the respective directions comprise a first direction of the array and a second direction of the array different from the first direction; and

obtaining, by a multiply unit that is coupled to the weight matrix register, a multiplication result based on the received weight input and another input data.

10. The method of claim 9 , wherein the other input data comprises a vector data input, and wherein the multiplication result is a part of a plurality of neural network computations.

11. The method of claim 10 , further comprising:

receiving, by the multiply unit, another weight input from the weight matrix register; and

multiplying, by the multiply unit, the other received weight input with another vector data input to generate another multiplication result, wherein the other multiplication result is another part of the plurality of neural network computations.

12. The method of claim 9 , wherein the array is a systolic array of cells.

13. The method of claim 9 , wherein:

the array has a two-dimensional format;

the first direction of the array is the first direction in the two-dimensional format; and

the second direction of the array is the second direction in the two-dimensional format.

14. The method of claim 9 , further comprising:

selecting, by a multiplexer, the weight input from at least two respective weight inputs each stored in a corresponding weight storing register; and

receiving, by the weight matrix register, the selected weight input from the multiplexer.

15. The method of claim 9 , wherein the plurality of weight storing registers comprise a transposed weight shift register and a non-transposed weight shift register physically separate from the transposed weight shift register.

16. The method of claim 9 , wherein the plurality of weight storing registers comprise:

a first weight storing register configured to receive a first weight input over a first wired path from a first cell of the plurality of cells that is along the first direction; and

a second weight storing register configured to receive a second weight input over a second wired path from a second cell of the plurality of cells that is along the second direction;

wherein the weight input is one of the first weight input and the second weight input.

17. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

receiving, by a weight matrix register of a cell of a plurality of cells arranged in an array of a matrix multiply unit, a weight input from a plurality of weight storing registers, wherein each of the plurality of weight storing registers is configured to receive a respective weight input from a respective direction of the array, wherein respective directions comprise a first direction of the array and a second direction of the array different from the first direction; and

obtaining, by a multiply unit that is coupled to the weight matrix register, a multiplication result based on the received weight input and another input data.

18. The non-transitory computer program product of claim 17 , wherein:

the array has a two-dimensional format;

the first direction of the array is the first direction in the two-dimensional format; and

the second direction of the array is the second direction in the two-dimensional format.

19. The non-transitory computer program product of claim 17 , wherein plurality of weight storing registers comprise a transposed weight shift register and a non-transposed weight shift register physically separate from the transposed weight shift register.

20. The non-transitory computer program product of claim 17 , wherein the plurality of weight storing registers comprise:

a first weight storing register configured to receive a first weight input over a first wired path from a first cell of the plurality of cells that is along the first direction; and

a second weight storing register configured to receive a second weight input over a second wired path from a second cell of the plurality of cells that is along the second direction;

wherein the weight input is one of the first weight input and the second weight input.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2021
From: PHELPS, ANDREW EVERETT; JOUPPI, NORMAN PAUL
To: GOOGLE INC.
Reel/Frame 055696/0053 →
CHANGE OF NAME Recorded Mar 24, 2021
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 055696/0125 →
Continuity (5)
Continuation 16915286 · Jun 29, 2020
Continuation 16529662 · Aug 1, 2019
Continuation 15983037 · May 17, 2018
Provisional Application 62507766 · May 17, 2017
Related Publication 20210209193A1 · Jul 8, 2021
Cited By (1)
US 12,530,426