A neural network unit includes a programmable indicator, a first memory that holds first operands, a second memory that holds second operands, neural processing units (NPU), and activation units. Each NPU has an accumulator and an arithmetic unit that performs a series of multiply operations on pairs of the first and second operands received from the first and second memories to generate a series of products, and a series of addition operations on the series of products to accumulate an accumulated value in the accumulator. The activation units perform activation functions on the accumulated values in the accumulators to generate results. When the indicator specifies the first action, the neural network unit writes to the first memory the results generated by the activation units. When the indicator specifies the second action, the neural network unit writes to the first memory the accumulated values in the accumulators.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A neural network unit, comprising: a programmable indicator that specifies first and second actions; a first memory that holds first operands; a second memory that holds second operands; a plurality of neural processing units (NPU) each having: an accumulator; and an arithmetic unit that performs a series of multiply operations on pairs of the first and second operands received from the first and second memories to generate a series of products, the arithmetic unit also performs a series of addition operations on the series of products to accumulate an accumulated value in the accumulator; a plurality of activation units that perform activation functions on the accumulated values in the accumulators to generate results; when the indicator specifies the first action, the neural network unit writes to the first memory the results generated by the plurality of activation units; and when the indicator specifies the second action, the neural network unit writes to the first memory the accumulated values in the accumulators. 2. The neural network unit of claim 1, further comprising: the results generated by the activation function units are a same width as the first and second operands; the accumulators are wider than the first and second operands; and when the indicator specifies the second action, the neural network unit writes to the first memory separate portions of the accumulated values of the accumulators that are each a same width as the first and second operands. 3. The neural network unit of claim 1, further comprising: the neural network unit converts the accumulated values to a canonical form that is twice a width of the first and second operands; and when the indicator specifies the second action, the neural network unit writes to the first memory the canonical form of the accumulated values. 4. The neural network unit of claim 1, further comprising: the accumulated values are fixed-point values. 5. The neural network unit of claim 4, further comprising: a register programmable with a location of a binary point of the fixed-point accumulated values. 6. The neural network unit of claim 4, further comprising: the width of the accumulators is sufficiently large to accommodate the arithmetic unit to perform the series of multiplications and additions using integer arithmetic to generate the accumulated values without losing precision. 7. The neural network unit of claim 6, further comprising: the series of multiplications and additions using integer arithmetic to generate the accumulated values is a series of at least 512 integer multiplications and additions per NPU. 8. The neural network unit of claim 1, further comprising: the first memory includes a first address input that specifies a row of words the width of the first operands; the second memory includes a second address input that specifies a row of words the width of the second operands; and a sequencer that generates first and second addresses provided to the first and second address inputs, respectively. 9. The neural network unit of claim 8, further comprising: for each of a plurality of clock cycles, the sequencer generates the first address to specify a different row of the first memory to which the neural network unit writes a different portion of the accumulated values. 10. The neural network unit of claim 8, further comprising: a memory programmable with instructions executable by the sequencer. 11. A processor, comprising: a neural network unit, comprising: a programmable indicator that specifies first and second actions; a first memory that holds first operands; a second memory that holds second operands; a plurality of neural processing units (NPU) each having: an accumulator; and an arithmetic unit that performs a series of multiply operations on pairs of the first and second operands received from the first and second memories to generate a series of products, the arithmetic unit also performs a series of addition operations on the series of products to accumulate an accumulated value in the accumulator; a plurality of activation units that perform activation functions on the accumulated values in the accumulators to generate results; when the indicator specifies the first action, the neural network unit writes to the first memory the results generated by the plurality of activation units; and when the indicator specifies the second action, the neural network unit writes to the first memory the accumulated values of the accumulators. 12. The processor of claim 11, further comprising: a plurality of architectural registers accessible by instructions of an instruction set architecture of the processor; at least one execution unit in addition to the neural network unit that performs arithmetic operations on operands held in the architectural registers; the instruction set architecture of the processor includes an instruction that reads the first memory of the neural network unit; and the processor is configured to execute a program that reads the accumulated values from the first memory and performs an activation function on the accumulated values that is not included in the activation functions of the activation function units of the neural network unit. 13. The processor of claim 12, further comprising: the activation function that is not included in the activation functions of the activation function units of the neural network unit is a softmax activation function. 14. A method for operating a neural network unit having a programmable indicator that specifies first and second actions, a first memory that holds first operands, a second memory that holds second operands, a plurality of neural processing units (NPU) each having an accumulator and an arithmetic unit, the method comprising: performing, by each of the arithmetic units, a series of multiply operations on pairs of the first and second operands received from the first and second memories to generate a series of products; performing, by each of the arithmetic units, a series of addition operations on the series of products to accumulate an accumulated value in the accumulator; performing, by a plurality of activation units, activation functions on the accumulated values in the accumulators to generate results; writing, when the indicator specifies the first action, to the first memory the results generated by the plurality of activation units; and writing, when the indicator specifies the second action, to the first memory the accumulated values in the accumulators. 15. The method of claim 14, further comprising: the results generated by the activation function units are a same width as the first and second operands; the accumulators are wider than the first and second operands; and writing, when the indicator specifies the second action, to the first memory separate portions of the accumulated values of the accumulators that are each a same width as the first and second operands. 16. The method of claim 14, further comprising: converting the accumulated values to a canonical form that is twice a width of the first and second operands; and writing, when the indicator specifies the second action, to the first memory the canonical form of the accumulated values. 17. The method of claim 16, further comprising: the accumulated values are fixed-point values. 18. The method of claim 17, further comprising: programming a register of the neural network unit with a location of a binary point of the fixed-point accumulated values. 19. The method of claim 17, further comprising: the width of the accumulators is sufficiently large to accommodate the arithmetic unit to perform the series of multiplications and additions using integer arithmetic to generate the accumulated values without losing precision. 20. The method of claim 19, further comprising: the series of multiplications and additions using integer arithmetic to generate the accumulated values is a series of at least 512 integer multiplications and additions per NPU. 21. The method of claim 14, further comprising: the first memory includes a first address input that specifies a row of words the width of the first operands; the second memory includes a second address input that specifies a row of words the width of the second operands; and generating, by a sequencer of the neural network unit, first and second addresses provided to the first and second address inputs, respectively.