IP Library Granted Patent US 11,775,313
Granted Patent B2
US 11,775,313 · App. 15/990,365 · Granted Oct 3, 2023

Hardware accelerator for convolutional neural networks and method of operation thereof

Inventors: Eugenio Culurciello (West Lafayette, IN); Vinayak Gokhale (West Lafayette, IN); Aliasger Zaidy (West Lafayette, IN); Andre Chang (West Lafayette, IN)
Assignee: Purdue Research Foundation
G06F9/3895G06F9/545G06N3/04G06N3/045G06N3/063G06N3/08G06N5/046G06F2212/454
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,775,313
App. No.
15/990,365
Granted
Oct 3, 2023
Kind
B2
Abstract

An accelerator for processing of a convolutional neural network (CNN) includes a compute core having a plurality of compute units. Each compute unit includes a first memory cache configured to store at least one vector in a map trace, a second memory cache configured to store at least one vector in a kernel trace, and a plurality of vector multiply-accumulate units (vMACs) connected to the first and second memory caches. Each vMAC includes a plurality of multiply-accumulate units (MACs). Each MAC includes a multiplier unit configured to multiply a first word that of the at least one vector in the map trace by a second word of the at least one vector in the kernel trace to produce an intermediate product, and an adder unit that adds the intermediate product to a third word to generate a sum of the intermediate product and the third word.

Claims (44)

1. An accelerator for processing of a convolutional neural network (CNN) comprising:

a compute core comprising:

a plurality of compute units, each compute unit comprising:

a first memory cache configured to store a map trace arranged as a plurality of cache lines each having at least one vector, the map trace corresponding to a contiguous set of input data in an input map for one layer of the CNN;

a second memory cache configured to store at least one vector in a kernel trace, the kernel trace corresponding to a contiguous set of weights in a kernel of a convolutional layer or a fully-connected layer of the CNN;

a plurality of vector multiply-accumulate units (vMACs) connected to the first memory cache and the second memory cache, each vMAC comprising a plurality of multiply-accumulate units (MACs), each MAC including a multiplier unit configured to, for each of a plurality of cycles of the plurality of vMACs, multiply a first word that forms a portion of the at least one vector of a respective cache line of the plurality of cache lines in the map trace in the first memory cache by a second word that forms a portion of the at least one vector in the kernel trace in the second memory cache to produce an intermediate product, and an adder unit that, for each of the plurality of cycles of the plurality of vMACs, adds the intermediate product to a third word to generate a sum of the intermediate product and the third word as an output; and

a trace decoder configured to (i) receive a trace instruction that identifies an operating mode of the compute core, a start address of the map trace, and a length of the map trace and (ii) based on the trace instruction, for each of the plurality of cycles of the plurality of vMACs, increment the start address, fetch the respective cache line from the plurality of cache lines in the first memory cache, and forward the respective cache line to the plurality of vMACs depending on the operating mode of the compute core, until the length of the map trace is reached; and

a control core operatively connected to the plurality of compute units in the compute core, the control core being configured to provide the trace instruction to the trace decoder, the control core being configured to select the operating mode of the compute core depending on a number of input maps to the convolutional layer of the CNN and control operation of the plurality of compute units according to the selected operating mode, the operating mode being either one of a cooperative mode and an independent mode, the cooperative mode being selected in response to the number of input maps to the convolutional layer of the CNN being a multiple of 16, the independent mode being selected in response to the number of input maps to the convolutional layer of the CNN not being a multiple of 16,

wherein, in the cooperative mode, each MAC in the plurality of MACs in at least one of the plurality of vMACs in each compute unit receives the first word from a different portion of the map trace, and

wherein, in the independent mode, each MAC in the plurality of MACs in at least one of the plurality of vMACs in each compute unit receives the first word from a single portion of the map trace.

2. The accelerator of claim 1 , each vMAC further comprising:

a shift register connected to outputs of the plurality of MACs, the shift register being configured to generate a series of outputs, each output in the series of outputs corresponding to an output of one MAC in the plurality of MACs; and

a gather adder configured to generate one of:

a single sum of the series of outputs of the shift register and a bias value as an output; or

a plurality of sums, each sum in the plurality of sums corresponding to a sum of an output of one MAC in the plurality of MACs received from the shift register and another bias value.

3. The accelerator of claim 1 , each compute unit in the plurality of compute units further comprising:

a vector maxpool unit (vMAX) connected to the first memory cache of the compute unit, the vMAX comprising a plurality of comparators that implement a max pooling layer of the CNN based on outputs from the plurality of vMACs that are stored in the first memory cache of the compute unit.

4. The accelerator of claim 1 further comprising:

a memory interface; and

a compute cluster connected to the memory interface, the compute cluster comprising:

the compute core;

a data distribution network; and

the control core, the control core being operatively connected to the data distribution network.

5. The accelerator of claim 1 wherein the first memory cache in each compute unit is implemented as a first scratchpad memory device in the compute core and the second memory cache in each compute unit is implemented as a second scratchpad memory device.

6. The accelerator of claim 1 , wherein each compute unit in the plurality of compute units further comprises four vMACs and each vMAC further comprises sixteen MACs.

7. The accelerator of claim 6 , wherein a first vMAC in the plurality of vMACs reads 256-bits of data as the at least one vector of the respective cache line in the map trace from the first memory cache and each MAC in the plurality of MACs in the first vMAC receives a 16-bit first word from the 256-bits of data.

8. The accelerator of claim 1 wherein the first memory cache stores 256 kB of map trace data and the second memory cache stores 32 kB of kernel trace data.

9. The accelerator of claim 1 further comprising:

a single memory cache that is the first memory cache in each compute unit in the plurality of compute units in the compute core, the single memory cache being shared by the plurality of compute units.

10. The accelerator of claim 9 wherein the compute core further comprises four compute units.

11. The accelerator of claim 9 wherein the single memory cache stores 512 kB of the map trace data.

12. A method of operating an accelerator for processing of a convolutional neural network (CNN) comprising:

loading, with a control core in the accelerator, a map trace into a first memory cache in a compute core in the accelerator, the map trace being arranged as a plurality of cache lines each having at least one vector, the map trace corresponding to a contiguous set of input data in a plurality of input maps for one layer of the CNN;

loading, with the control core, at least one vector in a kernel trace into a second memory cache in the compute core in the accelerator, the kernel trace including a plurality of vectors of weight values corresponding to a contiguous set of weights in a kernel of a convolutional layer or a fully-connected layer of the CNN;

providing, with the control core, a trace instruction to a trace decoder, the trace instruction identifying an operating mode of the compute core, a start address of the map trace, and a length of the map trace;

operating a plurality of multiply-accumulate units (MACs) in a plurality of vector multiply-accumulate units (vMACs) in the compute core that are connected to the first memory cache and the second memory cache to implement a portion of the convolutional layer or the fully-connected layer in the CNN, the operating of each MAC further comprising, for each of a plurality of cycles of the plurality of vMACs:

multiplying, with a multiplier unit in the MAC, a first word that forms a portion of the at least one vector of a respective cache line of the plurality of cache lines in the map trace in the first memory cache by a second word that forms a portion of the at least one vector in the kernel trace in the second memory cache to produce an intermediate product, and

adding, with an adder unit in the MAC, the intermediate product to a third word to generate a sum of the intermediate product and the third word as an output;

operating the trace decoder to, based on the trace instruction, for each of the plurality of cycles of the plurality of vMACs, increment the start address of the map trace, fetch the respective cache line from the plurality of cache lines in the first memory cache, and forward the respective cache line to the plurality of vMACs depending on the operating mode of the compute core, until the length of the map trace is reached;

selecting, with the control core, the operating mode of the compute core depending on a number of input maps to the convolutional layer of the CNN, the operating mode being either one of a cooperative mode and an independent mode, the cooperative mode being selected in response to the number of input maps to the convolutional layer of the CNN being a multiple of 16, the independent mode being selected in response to the number of input maps to the convolutional layer of the CNN not being a multiple of 16;

operating, with the control core, the plurality of MACs in the cooperative mode in which each MAC receives the first word from a different portion of the map trace; and

operating, with the control core, the plurality of MACs in the independent mode in which each MAC receives the first word from a single portion of the map trace.

13. The method of claim 12 further comprising:

operating a plurality of comparators in a vector maxpool unit (vMAX) in the compute core, the vMAX that receive outputs from the plurality of vMACs that are stored in the first memory cache to implement a max pooling layer of the CNN.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2023
From: CULURCIELLO, EUGENIO; GOKHALE, VINAYAK ANAND; CHANG, ANDRE; ZAIDY, ALIASGER
To: PURDUE RESEARCH FOUNDATION
Reel/Frame 064623/0259 →
Continuity (2)
Provisional Application 62511389 · May 26, 2017
Related Publication 20180341495A1 · Nov 29, 2018