IP Library › Granted Patent US 11,657,260
Granted Patent B2
US 11,657,260 · App. 17/510,397 · Granted May 23, 2023

Neural network hardware accelerator data parallelism

Inventors: Nikolay Nez (Tokyo, JP); Oleg Khavin (Tokyo, JP); Tanvir Ahmed (Tokyo, JP); Jens Huthmann (Hyogo, JP); Sakyasingha Dasgupta (Tokyo, JP)
Assignee: EDGECORTIX PTE. LTD.
G06N3/063
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,657,260
App. No.
17/510,397
Granted
May 23, 2023
Kind
B2
Abstract

Neural network hardware acceleration data parallelism is performed by an integrated circuit including a plurality of memory banks, each memory bank among the plurality of memory banks configured to store values and to transmit stored values, a plurality of computation units, each computation unit among the plurality of computation units including a processor including circuitry configured to perform a mathematical operation on an input data value and a weight value to produce a resultant data value, and a computation controller configured to cause a value transmission to be received by more than one computation unit or memory bank.

Claims (47)

1. An integrated circuit comprising:

a plurality of memory banks, each memory bank among the plurality of memory banks configured to store values and to transmit stored values;

a plurality of computation units, each computation unit among the plurality of computation units including:

a processor including circuitry configured to perform a mathematical operation on an input data value and a weight value to produce a resultant data value, and

a computation controller configured to:

receive the input data value from any of the plurality of memory banks,

receive the weight value from any of the plurality of memory banks,

cause the processor to perform the mathematical operation, and

transmit the resultant data value to at least two memory banks among the plurality of memory banks, such that a single transmission of the resultant data value is received by the at least two memory banks at negligibly different times, wherein differences between the negligibly different times are attributable to differences in physical distances between the computation unit and respective ones of the at least two memory banks;

a plurality of interconnects connecting each computation unit among the plurality of computation units to each memory bank among the plurality of memory banks;

from the single computation unit to the at least two memory banks;

wherein the computation controller of a first computation unit among the plurality of computation units is further configured to:

synchronize a second computation unit among the plurality of computation units to receive one of the input data value or the weight value, and

read the one of the input data value or the weight value from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks, such that the memory bank storing the one of the input data value or the weight value makes a single transmission of the one of the input data value or the weight value to be read by the computation controller and the second computation unit at two negligibly different times, wherein a difference between the two negligibly different times is attributable to a difference in a physical distance between the computation controller and the memory bank storing the one of the input data value or the weight value, and a physical distance between the second computation unit and the memory bank storing the one of the input data value or the weight value,

wherein the plurality of interconnects route output from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks to the first computation unit and the second computation unit to facilitate the single transmission of the one of the input data value or the weight value from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks to the first computation unit and the second computation unit.

2. The integrated circuit of claim 1 , further comprising a controller configured to receive instructions to perform neural network inference.

3. The integrated circuit of claim 1 , wherein the computation controller is further configured to set a lock on each of the at least two memory banks.

4. The integrated circuit of claim 1 , wherein the computation controller is further configured to apply a bank offset for one or more of the at least two memory banks.

5. The integrated circuit of claim 1 , wherein the computation controller is further configured to release a lock on each of the at least two memory banks.

6. The integrated circuit of claim 1 , wherein the processor is configured to perform point-wise convolution or depth-wise convolution.

7. The integrated circuit of claim 1 , wherein each memory bank among the plurality of memory banks is configured to store values received through a corresponding bank multiplexer.

8. The integrated circuit of claim 7 , wherein the bank multiplexer is configurable to connect to a computation unit among the plurality of computation units or an external memory.

9. The integrated circuit of claim 1 , wherein each computation unit among the plurality of computation units further includes a computation multiplexer configurable to connect to one of the plurality of memory banks.

10. A method comprising:

retrieving, by a first computation unit among a plurality of computation units included in an integrated circuit configured to perform neural network inference, an input data value from a memory bank storing the input data value among a plurality of memory banks included in the integrated circuit;

retrieving, by the first computation unit, a weight value from a memory bank storing the weight value among the plurality of memory banks;

performing, by the first computation unit, a mathematical operation on the input data value and the weight value to produce a resultant data value; and

transmitting, by the first computation unit, the resultant data value to at least two memory banks among the plurality of memory banks, such that the first computation unit makes a single transmission of the resultant data value, which is received by the at least two memory banks at negligibly different times, wherein differences between the negligibly different times are attributable to differences in physical distances between the computation unit and respective ones of the at least two memory banks;

wherein a plurality of interconnects route output from the first computation unit to the at least two memory banks to facilitate the single transmission of the resultant data value from the first computation unit to the at least two memory banks;

wherein retrieving one of the input data value or the weight value includes synchronizing a second computation unit to read the one of the input data value or the weight value, and

reading, by the first computation unit, the one of the input data value or the weight value from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks, such that the memory bank storing the one of the input data value or the weight value makes a single transmission of the one of the input data value or the weight value, which is read by the first computation unit and the second computation unit at two negligibly different times, wherein a difference between the two negligibly different times is attributable to a difference in a physical distance between the computation controller and the memory bank storing the one of the input data value or the weight value, and a physical distance between the second computation unit and the memory bank storing the one of the input data value or the weight value,

wherein a plurality of interconnects route output from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks to the first computation unit and the second computation unit to facilitate the single transmission of the one of the input data value or the weight value from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks to the first computation unit and the second computation unit.

11. The method of claim 10 , further comprising receiving, by the integrated circuit, an instruction to perform inference of a neural network.

12. The method of claim 10 , wherein the retrieving the input data value includes configuring a first multiplexer corresponding to the first computation unit to connect to the memory bank storing the input data value, and retrieving the weight value includes configuring the first multiplexer to connect to the memory bank storing the weight value.

13. The method of claim 10 , wherein transmitting the resultant value includes setting a lock on each of the at least two memory banks.

14. The method of claim 10 , wherein transmitting the resultant value includes applying a bank offset for one or more of the at least two memory banks.

15. The method of claim 10 , wherein transmitting the resultant value includes releasing a lock on each of the at least two memory banks.

16. An integrated circuit comprising:

a plurality of memory banks, each memory bank among the plurality of memory banks configured to store values and to transmit stored values; and

a plurality of computation units, each computation unit among the plurality of computation units including:

a processor including circuitry configured to perform a mathematical operation on an input data value and a weight value to produce a resultant data value, and a computation controller;

a plurality of interconnects connecting each computation unit among the plurality of computation units to each memory bank among the plurality of memory banks;

wherein the computation controller of a first computation unit among the plurality of computation units is configured to synchronize a second computation unit among the plurality of computation units to receive one of the input data value or the weight value, and read the one of the input data value or the weight value from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks, such that the memory bank storing the one of the input data value or the weight value makes a single transmission of the one of the input data value or the weight value to be read by the computation controller and the second computation unit at negligibly different times, wherein differences between the negligibly different times are attributable to differences in physical distances between the computation unit and respective ones of the at least two memory banks;

wherein the plurality of interconnects route output from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks to the first computation unit and the second computation unit to facilitate the single transmission of the one of the input data value or the weight value from the memory bank storing the one of the input data value or the weight value among the plurality of memory banks to the first computation unit and the second computation unit.

17. The integrated circuit of claim 16 , wherein the computation controller is further configured to receive the input data value from any of the plurality of memory banks, receive the weight value from any of the plurality of memory banks, cause the processor to perform the mathematical operation, and

transmit the resultant data value to at least two memory banks among the plurality of memory banks, such that a single transmission of the resultant data value is received by the at least two memory banks at two negligibly different times, wherein a difference between the two negligibly different times is attributable to a difference in a physical distance between the computation controller and the memory bank storing the one of the input data value or the weight value, and a physical distance between the second computation unit and the memory bank storing the one of the input data value or the weight value.

18. The integrated circuit of claim 16 , wherein the computation controller is further configured to set a lock on each of the at least two memory banks.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2023
From: EDGECORTIX PTE. LTD.
To: EDGECORTIX INC.
Reel/Frame 065056/0608 →
ASSIGNEE ADDRESS CHANGE Recorded Feb 28, 2023
From: EDGECORTIX PTE. LTD.
To: EDGECORTIX PTE. LTD.
Reel/Frame 062967/0881 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2021
From: NEZ, NIKOLAY; KHAVIN, OLEG; AHMED, TANVIR; HUTHMANN, JENS; DASGUPTA, SAKYASINGHA
To: EDGECORTIX PTE. LTD.
Reel/Frame 057906/0717 →
Continuity (1)
Related Publication 20230128600A1 · Apr 27, 2023