IP Library Granted Patent US 11,164,072
Granted Patent B2
US 11,164,072 · App. 15/981,711 · Granted Nov 2, 2021

Convolution engines for systolic neural network processor

Inventor: Luiz M. Franca-Neto (Sunnyvale, CA)
Assignee: Western Digital Technologies, Inc.
G06N3/063G06F15/8046G06N3/04G06N3/0481G06N3/08G06N3/084G06N5/046
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,164,072
App. No.
15/981,711
Granted
Nov 2, 2021
Kind
B2
Abstract

Devices and methods for systolically processing data according to a neural network. A first processing unit performs computations of a first node of a first layer to generate a first output and attaches a first tag to the first output identifying the first processing unit. A second processing unit performs computations of a second node of the first layer to generate a second output and attaches a second tag to the second output identifying the second processing unit. A third processing unit performs computations of a third node of a second layer including receiving the first and second outputs, using a first convolutional engine to perform a first convolution on the first output using a first weight identified by the first tag, and using a second convolutional engine of to perform a second convolution on the second output using a second weight identified by the second tag.

Claims (67)

1. A device for performing computations of a neural network comprising at least a first layer and a second layer, the device comprising:

a first processing circuitry unit configured to:

perform computations of a first node of the first layer of the neural network to generate a first output; and

attach a first tag to the first output identifying the first processing circuitry unit;

a second processing circuitry unit configured to:

perform computations of a second node of the first layer of the neural network to generate a second output; and

attach a second tag to the second output identifying the second processing circuitry unit; and

a third processing circuitry unit configured to perform computations of a third node of the second layer of the neural network, wherein the third processing circuitry unit includes:

an input systolic element configured to receive, during a first systolic pulse clock cycle, the first output of the first processing circuitry unit and the second output of the second processing circuitry unit;

a first convolutional engine configured to perform a first convolution on the first output to generate a first processed value at least partly by using a first weight;

a second convolutional engine configured to perform a second convolution on the second output to generate a second processed value at least partly by using a second weight; and

addition circuitry configured to receive and add the first and second processed values; and

wherein the third processing circuitry unit is further configured to identify the first weight and the second weight from a dataset including a plurality of weights of the neural network at least partly by:

identifying the first tag attached to the first output;

looking up the first weight in the dataset based on the first tag;

identifying the second tag attached to the second output; and

looking up the second weight in the dataset based on the second tag.

2. The device of claim 1 , wherein the device further includes a systolic processor chip, and wherein the first, second, and third processing circuitry units comprise circuitry embedded in the systolic processor chip.

3. The device of claim 2 , wherein the systolic processor chip comprises an array of processing circuitry units, wherein the first and second processing circuitry units form a portion of a first arrangement of the array, and wherein the third processing circuitry unit forms a portion of a second arrangement of the array.

4. The device of claim 1 , wherein:

the first convolutional engine is further configured to perform the first convolution at least partly by multiplying the first output by the first weight; and

the second convolutional engine is further configured to perform the second convolution at least partly by multiplying the second output by the second weight.

5. The device of claim 1 , wherein the first tag is indicative of a first address for the first processing circuitry unit, and wherein the second tag is indicative of a second address for the second processing circuitry unit.

6. The device of claim 1 , wherein the third processing circuitry unit comprises a memory, the device further comprising a controller configured to assign the third processing circuitry unit to the third node and to store the first weight in the memory.

7. The device of claim 1 , wherein the third processing circuitry unit further comprises:

an input systolic element configured to receive data via systolic pulses and provide the data to the first and second convolutional engines;

activation circuitry configured to perform an activation function on an output of the addition circuitry to generate an activation output; and

an output systolic element configured to output the activation output via at least one systolic pulse.

8. The device of claim 1 , further comprising:

a fourth processing circuitry unit configured to perform computations of a fourth node of the first layer of the neural network to generate a third output; and

a fifth processing circuitry unit configured to perform computations of a fifth node of the first layer of the neural network to generate a fourth output,

wherein the input systolic element of the third processing circuitry unit is further configured to receive the third and fourth outputs during a second systolic pulse clock cycle.

9. The device of claim 8 , wherein:

the first convolutional engine is further configured to perform a third convolution on the third output to generate a third processed value; and

the second convolutional engine is further configured to perform a fourth convolution on the fourth output to generate a fourth processed value.

10. The device of claim 9 , wherein the third processing circuitry unit is further configured to feed the first output back into the first convolutional engine for the third convolution, and to feed the second output back into the second convolutional engine for the fourth convolution.

11. A method for performing computations of a neural network comprising at least a first layer and a second layer, the method comprising:

performing, by a first processing circuitry unit, computations of a first node of the first layer of the neural network to generate a first output;

attaching, by the first processing circuitry unit, a first tag to the first output identifying the first processing circuitry unit;

performing, by a second processing circuitry unit, computations of a second node of the first layer of the neural network to generate a second output;

attaching, by the second processing circuitry unit, a second tag to the second output identifying the second processing circuitry unit;

performing, by a third processing circuitry unit, computations of a third node of the second layer of the neural network, wherein performing computations of the third node includes:

receiving the first and second outputs during a first systolic pulse clock cycle;

identifying a first weight and a second weight from a dataset including a plurality of weights of the neural network at least partly by:

identifying the first tag attached to the first output;

looking up the first weight in the dataset based on the first tag;

identifying the second tag attached to the second output and;

looking up the second weight in the dataset based on the second tag;

using a first convolutional engine of the third processing circuitry unit to perform a first convolution on the first output using the first weight to generate a first processed value;

using a second convolutional engine of the third processing circuitry unit to perform a second convolution on the second output using the second weight to generate a second processed value; and

summing the first and second processed values.

12. The method of claim 11 , further comprising:

performing the first convolution at least partly by multiplying the first output by the first weight; and

performing the second convolution at least partly by multiplying the second output by the second weight.

13. The method of claim 12 , further comprising tagging the first output with the first tag by an output systolic element of the first processing circuitry unit, wherein the first tag is indicative of an address for the first processing circuitry unit.

14. The method of claim 11 , further comprising systolically pulsing the first output with the first tag to an input systolic element of the third processing circuitry unit.

15. The method of claim 11 , further comprising:

performing, by a fourth processing circuitry unit, computations of a fourth node of the first layer of the neural network to generate a third output;

performing, by a fifth processing circuitry unit, computations of a fifth node of the first layer of the neural network to generate a fourth output; and

receiving the third and fourth outputs during at the third processing circuitry unit during a second systolic pulse clock cycle.

16. The method of claim 15 , further comprising:

performing, via the first convolutional engine, a third convolution on the third output to generate a third processed value;

performing, via the second convolutional engine, a fourth convolution on the fourth output to generate a fourth processed value.

17. The method of claim 16 , further comprising summing the third and fourth processed values with the first and second processed values.

18. The method of claim 16 , further comprising:

feeding the first output back into the first convolutional engine for the third convolution; and

feeding the second output back into the second convolutional engine for the fourth convolution.

Assignments (8)
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2018
From: FRANCA-NETO, LUIZ M.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 047024/0995 →
Continuity (3)
Provisional Application 62628076 · Feb 8, 2018
Provisional Application 62627957 · Feb 8, 2018
Related Publication 20190244106A1 · Aug 8, 2019