IP Library Granted Patent US 11,783,161
Granted Patent B2
US 11,783,161 · App. 16/446,610 · Granted Oct 10, 2023

Neural processor

Inventors: Ilia Ovsiannikov (Porter Ranch, CA); Ali Shafiee Ardestani (San Jose, CA); Joseph H. Hassoun (Los Gatos, CA); Lei Wang (Burlingame, CA); Sehwan Lee (Hwaseong-si, KR); JoonHo Song (Hwaseong-si, KR); Jun-Woo Jang (Hwaseong-si, KR); Yibing Michelle Wang (Pasadena, CA); Yuecheng Li (San Jose, CA)
Assignee: Samsung Electronics Co., Ltd.
G06N3/04G06F17/153G06F17/16G06N3/08G06T9/002G06F9/3001
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,783,161
App. No.
16/446,610
Filed
Jun 19, 2019
Granted
Oct 10, 2023
Kind
B2
Examiner
HSU, JONI
Art Unit
2611
USPC
706/27
Abstract

A neural processor. In some embodiments, the processor includes a first tile, a second tile, a memory, and a bus. The bus may be connected to the memory, the first tile, and the second tile. The first tile may include: a first weight register, a second weight register, an activations buffer, a first multiplier, and a second multiplier. The activations buffer may be configured to include: a first queue connected to the first multiplier and a second queue connected to the second multiplier. The first queue may include a first register and a second register adjacent to the first register, the first register being an output register of the first queue. The first tile may be configured: in a first state: to multiply, in the first multiplier, a first weight by an activation from the output register of the first queue, and in a second state: to multiply, in the first multiplier, the first weight by an activation from the second register of the first queue.

Claims (135)

1. A processor, comprising:

a first tile,

a second tile,

a memory, and

a bus,

the bus being connected to:

the memory,

the first tile, and

the second tile,

the first tile comprising:

a first weight register,

a second weight register,

an activations buffer,

a first multiplier, and

a second multiplier,

the activations buffer being configured to include:

a first queue connected to the first multiplier, and

a second queue connected to the second multiplier,

the first queue comprising a first register and a second register adjacent to the first register, the first register being an output register of the first queue,

the first tile being configured:

in a first state:

to multiply, in the first multiplier, a first weight by an activation from the output register of the first queue, and

in a second state:

to multiply, in the first multiplier, the first weight by an activation from the second register of the first queue,

wherein, in the first state, a first adder is configured to be connected to an output of the first multiplier, and

wherein, in the second state, a second adder is configured to be connected to the output of the first multiplier.

2. The processor of claim 1 , wherein, in the second state, the output register of the first queue contains zero.

3. The processor of claim 1 , wherein the first adder is configured, in the first state:

to be connected to

an output of the second multiplier, and

to add:

a product received from the output of the first multiplier, and

a product received from the output of the second multiplier.

4. The processor of claim 3 , further comprising:

a first accumulator connected to the first adder, and

a second accumulator connected to the second adder,

the first accumulator comprising a register and being configured, in the first state:

to add to a value in the register of the first accumulator a sum received from the first adder, to form an accumulated value of the first accumulator, and

to store the accumulated value of the first accumulator in the register of the first accumulator.

5. The processor of claim 4 , wherein the second accumulator comprises a register and is configured, in the second state,

to add to a value in the register of the second accumulator a sum received from the second adder, to form an accumulated value of the second accumulator, and

to store the accumulated value of the second accumulator in the register of the second accumulator.

6. The processor of claim 4 , further comprising an activation zero skip control circuit configured to:

determine that the output register of the first queue contains zero, and

in response to determining that the output register of the first queue contains zero, cause the first tile to operate in the second state.

7. The processor of claim 6 , further comprising a multiplexer having:

an input, at a single-port side of the multiplexer, connected to the first multiplier,

a first output, at a multi-port side of the multiplexer, connected to the first adder, and

a second output, at the multi-port side of the multiplexer, connected to the second adder.

8. The processor of claim 7 , wherein the activation zero skip control circuit is configured to control the multiplexer,

in the first state, to connect the input to the first output, and

in the second state, to connect the input to the second output.

9. The processor of claim 1 , wherein:

the second queue comprises a first register and a second register adjacent to the first register, the first register being an output register of the second queue; and

the first tile is further configured, in a third state, to multiply, in the first multiplier, the first weight by an activation from the second register of the second queue.

10. A method for calculating with a processing circuit, the processing circuit comprising:

a first tile,

a second tile,

a memory, and

a bus,

the bus being connected to:

the memory,

the first tile, and

the second tile,

the first tile comprising:

a first weight register,

a second weight register,

an activations buffer,

a first multiplier, and

a second multiplier,

the activations buffer being configured to include:

a first queue connected to the first multiplier, and

a second queue connected to the second multiplier,

the first queue comprising a first register and a second register adjacent to the first register, the first register being an output register of the first queue,

the method comprising:

in a first state:

multiplying, by the first multiplier, a first weight by an activation from the output register of the first queue, and

in a second state:

multiplying, by the first multiplier, the first weight by an activation from the second register of the first queue,

wherein, in the first state, a first adder is configured to be connected to an output of the first multiplier, and

wherein, in the second state, a second adder is configured to be connected to the output of the first multiplier.

11. The method of claim 10 , wherein, in the second state, the output register of the first queue contains zero.

12. The method of claim 10 ,

further comprising, in the first state:

connecting the first adder to

an output of the second multiplier, and

adding, by the first adder:

a product received from the output of the first multiplier, and

a product received from the output of the second multiplier.

13. The method of claim 12 , wherein the processing circuit further comprises:

a first accumulator connected to the first adder, and

a second accumulator connected to the second adder,

the first accumulator comprising a register,

the method further comprising, in the first state:

adding, by the first accumulator, to a value in the register of the first accumulator, a sum received from the first adder, to form an accumulated value of the first accumulator, and

storing, by the first accumulator, the accumulated value of the first accumulator in the register of the first accumulator.

14. The method of claim 13 , wherein the second accumulator comprises a register and the method further comprises, in the second state,

adding, by the second accumulator, to a value in the register of the second accumulator, a sum received from the second adder, to form an accumulated value of the second accumulator, and

storing, by the second accumulator, the accumulated value of the second accumulator in the register of the second accumulator.

15. The method of claim 13 , wherein the processing circuit further comprises an activation zero skip control circuit, and the method further comprises:

determining, by the activation zero skip control circuit, that the output register of the first queue contains zero, and

in response to determining that the output register of the first queue contains zero, causing the first tile to operate in the second state.

16. The method of claim 15 , wherein the processing circuit further comprises a multiplexer having:

an input, at a single-port side of the multiplexer, connected to the first multiplier,

a first output, at a multi-port side of the multiplexer, connected to the first adder, and

a second output, at the multi-port side of the multiplexer, connected to the second adder.

17. The method of claim 16 , further comprising controlling, by the activation zero skip control circuit, the multiplexer:

in the first state, to connect the input to the first output, and

in the second state, to connect the input to the second output.

18. A method for calculating with a means for processing, the means for processing comprising:

a first tile,

a second tile,

a memory, and

a bus,

the bus being connected to:

the memory,

the first tile, and

the second tile,

the first tile comprising:

a first weight register,

a second weight register,

an activations buffer,

a first multiplier, and

a second multiplier,

the activations buffer being configured to include:

a first queue connected to the first multiplier, and

a second queue connected to the second multiplier,

the first queue comprising a first register and a second register adjacent to the first register, the first register being an output register of the first queue,

the method comprising:

in a first state:

multiplying, in the first multiplier, a first weight by an activation from the output register of the first queue, and

in a second state:

multiplying, in the first multiplier, the first weight by an activation from the second register of the first queue,

wherein, in the first state, a first adder is configured to be connected to an output of the first multiplier, and

wherein, in the second state, a second adder is configured to be connected to the output of the first multiplier.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 23, 2020
From: OVSIANNIKOV, ILIA; SHAFIEE ARDESTANI, ALI; HASSOUN, JOSEPH H.; WANG, LEI; LEE, SEHWAN; SONG, JOONHO; JANG, JUN-WOO; WANG, YIBING MICHELLE; LI, YUECHENG
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 054501/0001 →
Continuity (5)
Provisional Application 62689008 · Jun 22, 2018
Provisional Application 62798297 · Jan 29, 2019
Provisional Application 62841590 · May 1, 2019
Provisional Application 62841606 · May 1, 2019
Related Publication 20190392287A1 · Dec 26, 2019