IP Library Granted Patent US 10,282,348
Granted Patent B2
US 10,282,348 · App. 15/090,801 · Granted May 7, 2019

Neural network unit with output buffer feedback and masking capability

Inventors: G. Glenn Henry (Austin, TX); Terry Parks (Austin, TX); Kyle T. O'Brien (Austin, TX)
Assignee: VIA ALLIANCE SEMICONDUCTOR CO., LTD.
G06F15/82G06F1/10G06F7/483G06F7/49947G06F9/3001G06F9/3004G06F9/30029G06F9/30032G06F9/30098G06F9/30101G06F9/30189G06F9/321G06F9/38G06F9/3836G06F9/3867G06F9/3877G06F9/3893G06F9/44505G06N3/04G06N3/0445G06N3/0454G06N3/063G06N3/0635G06N3/08G06N3/088
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 10,282,348
App. No.
15/090,801
Granted
May 7, 2019
Kind
B2
Abstract

An output buffer holds N words arranged as N/J mutually exclusive output buffer word groups (OBWG) of J words each. N processing units (PU) are arranged as N/J mutually exclusive PU groups each having an associated OBWG. Each PU has an accumulator, an arithmetic unit, and first and second multiplexed registers each having at least J+1 inputs and an output. A first input receives a memory operand and the other J inputs receive the J words of the associated OBWG. Each accumulator provides its output to a respective output buffer word. Each arithmetic unit performs an operation on the first and second multiplexed register outputs and the accumulator output to generate a result for accumulation into the accumulator. A mask input to the output buffer controls which words, if any, of the N words retain their current value or are updated with their respective accumulator output.

Claims (23)

1. An apparatus, comprising: an output buffer that holds N words arranged as N/J mutually exclusive output buffer word groups of J words each of the N words, J is greater than 2 and N is at least twice J; an array of N processing units (PU) arranged as N/J mutually exclusive PU groups of J PUs each of the N PUs, each PU group of the N/J PU groups has an associated output buffer word group of the N/J output buffer word groups, each PU having: first and second multiplexed registers each having: at least J+1 inputs, a first input of the J+1 inputs receives an operand from a memory and the other J inputs receive the J words of the associated output buffer word group; an output; and a control input that controls selection of the J+1 inputs for provision on the output; an accumulator having an output for provision to a respective one of the N output buffer words; and an arithmetic unit having first and second inputs to receive the output of the first and second multiplexed registers, respectively, and a third input that receives the accumulator output, the arithmetic unit performs an operation on the first, second and third inputs to generate a result for accumulation into the accumulator; and the output buffer includes a mask input that controls which words, if any, of the N words retain their current value or are updated with their respective accumulator output.

2. The apparatus of claim 1 , further comprising: the mask input specifies J values, each of the J values controls whether a respective one of the J words of each output buffer word group retains its current value or is updated with its respective accumulator output.

3. The apparatus of claim 1 , further comprising: the mask input is generated in response to execution of an instruction by the apparatus.

4. The apparatus of claim 3 , further comprising: a program memory that holds program instructions, including the instruction in response to whose execution the mask input is generated; and the apparatus is an execution unit of a processor that comprises the apparatus, the processor has an architectural instruction set, and the instructions held in the program memory are non-architectural instructions that are distinct from architectural instructions of the architectural instruction set of the processor.

5. The apparatus of claim 1 , further comprising: a plurality of activation function units that selectively perform an activation function on the outputs of the accumulators to generate results for provision to the respective ones of the N output buffer words.

6. The apparatus of claim 1 , further comprising: an iteration count is generated in response to execution of an instruction by the apparatus, the iteration count controls a number of times the arithmetic unit performs the operation on the first, second and third inputs to generate a result for accumulation into the accumulator.

7. The apparatus of claim 1 , further comprising: a first memory that provides a first N words for provision to the first input of respective ones of the first multiplexed register; and a second memory that provides a second N words for provision to the first input of respective ones of the second multiplexed register.

8. The apparatus of claim 7 , further comprising: the N words of the output buffer are writable to the first or second memory.

9. The apparatus of claim 1 , further comprising: the control inputs of the first and second multiplexed registers are generated in response to execution of an instruction by the apparatus.

10. The apparatus of claim 9 , further comprising: the control inputs are provided to each PU of the array of N PUs in response to execution of the instruction.

11. The apparatus of claim 1 , further comprising: the first multiplexed register also includes a shifted input that receives the output of the first multiplexed register of an adjacent PU, the first multiplexed registers of the N PUs collectively operate as an N-word rotater when the first multiplexed register control input specifies the shifted input.

12. The apparatus of claim 11 , further comprising: the second multiplexed register also includes a shifted input that receives the output of the second multiplexed register of an adjacent PU, the second multiplexed registers of the N PUs collectively operate as an N-word rotater when the second multiplexed register control input specifies the shifted input.

13. A processor, comprising: an execution unit, comprising: an output buffer that holds N words arranged as N/J mutually exclusive output buffer word groups of J words each of the N words, J is greater than 2 and N is at least twice J; an array of N processing units (PU) arranged as N/J mutually exclusive PU groups of J PUs each of the N PUs, each PU group of the N/J PU groups has an associated output buffer word group of the N/J output buffer word groups, each PU having: first and second multiplexed registers each having: at least J+1 inputs, a first input of the J+1 inputs receives an operand from a memory and the other J inputs receive the J words of the associated output buffer word group; an output; and a control input that controls selection of the J+1 inputs for provision on the output; an accumulator having an output for provision to a respective one of the N output buffer words; and an arithmetic unit having first and second inputs to receive the output of the first and second multiplexed registers, respectively, and a third input that receives the accumulator output, the arithmetic unit performs an operation on the first, second and third inputs to generate a result for accumulation into the accumulator; and the output buffer includes a mask input that controls which words, if any, of the N words retain their current value or are updated with their respective accumulator output.

14. The processor of claim 13 , further comprising: the mask input specifies J values, each of the J values controls whether a respective one of the J words of each output buffer word group retains its current value or is updated with its respective accumulator output.

15. The processor of claim 13 , further comprising: the mask input is generated in response to execution of an instruction by the execution unit.

16. The processor of claim 15 , further comprising: the execution unit also includes a program memory that holds program instructions, including the instruction in response to whose execution the mask input is generated; and the processor has an architectural instruction set, and the instructions held in the program memory are non-architectural instructions that are distinct from architectural instructions of the architectural instruction set of the processor.

17. The processor of claim 13 , further comprising: the execution unit also includes a plurality of activation function units that selectively perform an activation function on the outputs of the accumulators to generate results for provision to the respective ones of the N output buffer words.

18. The processor of claim 13 , further comprising: the execution unit also includes an iteration count is generated in response to execution of an instruction by the execution unit, the iteration count controls a number of times the arithmetic unit performs the operation on the first, second and third inputs to generate a result for accumulation into the accumulator.

19. The processor of claim 13 , further comprising: the execution unit also includes: a first memory that provides a first N words for provision to the first input of respective ones of the first multiplexed register; and a second memory that provides a second N words for provision to the first input of respective ones of the second multiplexed register.

20. The processor of claim 13 , further comprising: the control inputs of the first and second multiplexed registers are generated in response to execution of an instruction by the execution unit.

21. The processor of claim 13 , further comprising: the first multiplexed register also includes a shifted input that receives the output of the first multiplexed register of an adjacent PU, the first multiplexed registers of the N PUs collectively operate as an N-word rotater when the first multiplexed register control input specifies the shifted input.

22. The processor of claim 21 , further comprising: the second multiplexed register also includes a shifted input that receives the output of the second multiplexed register of an adjacent PU, the second multiplexed registers of the N PUs collectively operate as an N-word rotater when the second multiplexed register control input specifies the shifted input.

23. A computer program product encoded in at least one non-transitory computer usable medium for use with a computing device, the computer program product comprising: computer usable program code embodied in said medium, for specifying an apparatus, the computer usable program code comprising: first program code for specifying an output buffer that holds N words arranged as N/J mutually exclusive output buffer word groups of J words each of the N words, J is greater than 2 and N is at least twice J; second program code for specifying an array of N processing units (PU) arranged as N/J mutually exclusive PU groups of J PUs each of the N PUs, each PU group of the N/J PU groups has an associated output buffer word group of the N/J output buffer word groups, each PU having: first and second multiplexed registers each having: at least J+1 inputs, a first input of the J+1 inputs receives an operand from a memory and the other J inputs receive the J words of the associated output buffer word group; an output; and a control input that controls selection of the J+1 inputs for provision on the output; an accumulator having an output for provision to a respective one of the N output buffer words; and an arithmetic unit having first and second inputs to receive the output of the first and second multiplexed registers, respectively, and a third input that receives the accumulator output, the arithmetic unit performs an operation on the first, second and third inputs to generate a result for accumulation into the accumulator; and the output buffer includes a mask input that controls which words, if any, of the N words retain their current value or are updated with their respective accumulator output.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2016
From: HENRY, G. GLENN; PARKS, TERRY; O'BRIEN, KYLE T.
To: VIA ALLIANCE SEMICONDUCTOR CO., LTD.
Reel/Frame 039307/0082 →
Continuity (4)
Provisional Application 62239254 · Oct 8, 2015
Provisional Application 62262104 · Dec 2, 2015
Provisional Application 62299191 · Feb 24, 2016
Related Publication 20170102941A1 · Apr 13, 2017