An array of N processing units (PU) each has: an accumulator; an arithmetic unit performs an operation on first, second and third inputs to generate a result to store in the accumulator, the first input receives the accumulator output; a weight input is received by the second input to the arithmetic unit; a multiplexed register has first and second data inputs, an output received by the third input to the arithmetic unit, and a control input that controls the data input selection. The multiplexed register output is also received by an adjacent PU's multiplexed register second data input. The N PU's multiplexed registers collectively operate as an N-word rotater when the control input specifies the second data input. Respective first/second memories hold W/D rows of N weight/data words and provide the N weight/data words to the corresponding weight/multiplexed register first data inputs. A sequencer controls the multiplexer and memories.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. An apparatus, comprising: an array of N processing units (PU) each having: an accumulator having an output; an arithmetic unit having first, second and third inputs and that performs an operation thereon to generate a result to store in the accumulator, the first input receives the output of the accumulator; a weight input that is received by the second input to the arithmetic unit; and a multiplexed register having first and second data inputs, an output received by the third input to the arithmetic unit, and a control input that controls selection of the first and second data inputs; and the output of the multiplexed register is also received by the second data input of the multiplexed register of an adjacent PU, the multiplexed registers of the N PUs collectively operate as an N-word rotater when the control input specifies the second data input; a first memory that holds W rows of N weight words and provides the N weight words of a row of the W rows to the corresponding weight inputs of the N PUs of the PU array and that has a first address input that specifies a row of the W rows; a second memory that holds D rows of N data words and provides the N data words of a row of the D rows to the corresponding first data inputs of the multiplexed register of the N PUs of the PU array and that includes a second address input that specifies a row of the D rows; and a sequencer that generates a control signal provided to the control input of the multiplexed register of the N PUs and that generates first and second addresses provided to the first and second address inputs, respectively. 2. The apparatus of claim 1, further comprising: initially, the sequencer: generates the second address to specify a row of the D rows; generates the control signal to select the first data input of the multiplexed register of the N PUs; and generates the first address to specify an initial row of the W rows; and subsequently, for each row of M rows of the W rows successive to the initial row, the sequencer: generates the control signal to select the second data input of the multiplexed register of the N PUs to cause the multiplexed registers of the N PUs to collectively operate as an N-word rotater; and generates the first address to specify the row of the M rows, M is a positive integer. 3. The apparatus of claim 2, further comprising: for each of the initial row and M rows, the arithmetic unit multiplies the second and third inputs to generate a product and adds the product to the first input to generate the result stored in the accumulator. 4. The apparatus of claim 1, further comprising: each PU also includes an activation function unit (AFU) that receives the output of the accumulator and performs an activation function thereon to generate a second result that is a same bit-width as each of the N data words. 5. The apparatus of claim 4, further comprising: the sequencer generates the second address to specify a row of the second memory to which the N PUs write their second results to corresponding words of the N data words of the row of the second memory specified by the second address. 6. The apparatus of claim 1, further comprising: for each of J clock cycles, the sequencer generates the second address to specify a different row of the second memory to which the N PUs write a different word of J words of the accumulator to corresponding words of the N data words of the row of the second memory specified by the second address, J is at least 2. 7. The apparatus of claim 1, further comprising: the N PUs are grouped as L groups of J PUs each; and L activation function units (AFUs), each shared by the J PUs of a corresponding group of the L groups, each AFU of the L AFUs receives the output of the accumulator of a dynamically selected one of the J PUs of the corresponding group and performs an activation function thereon to generate a second result that is a same bit-width as each of the N data words. 8. The apparatus of claim 7, further comprising: a buffer that holds N words corresponding to the N PUs, the N words of the buffer receive the second results generated by the L AFUs in response to performing the activation function on the received output of the accumulator of the corresponding N PUs. 9. The apparatus of claim 8, further comprising: after the buffer receives the N second results, the sequencer generates the second address to specify a row of the second memory to which the buffer writes the N second results. 10. The apparatus of claim 7, further comprising: for each of J clock cycles, for each group of the L groups: the sequencer selects one of the J PUs of the group for provision of the output of its accumulator to the corresponding one of the L AFUs for generation of the second result. 11. The apparatus of claim 1, further comprising: a memory programmable with instructions executable by the sequencer. 12. The apparatus of claim 1, further comprising: the sequencer clears the accumulator of the N PUs to zero prior to the arithmetic unit storing an initial instance of the result in the accumulator. 13. A method for operating an apparatus having an array of N processing units (PU), a first memory that that holds W rows of N weight words and that has a first address input that specifies a row of the W rows in response to which the first memory provides the N weight words of the row of the W rows to the corresponding weight inputs of the N PUs of the PU array, and a second memory that holds D rows of N data words and that includes a second address input that specifies a row of the D rows in response to which the second memory provides the N data words of the row of the D rows to the corresponding first data inputs of the multiplexed register of the N PUs of the PU array, and a sequencer, each NPU has an accumulator with an output, an arithmetic unit having first, second and third inputs and that performs an operation thereon to generate a result to store in the accumulator, the first input receives the output of the accumulator, a weight input that is received by the second input to the arithmetic unit, a multiplexed register having first and second data inputs, an output received by the third input to the arithmetic unit, and a control input that controls selection of the first and second data inputs, the output of the multiplexed register is also received by the second data input of the multiplexed register of an adjacent PU, the sequencer generates a control signal provided to the control input of the multiplexed register of the N PUs and generates first and second addresses provided to the first and second address inputs, respectively, the method comprising: initially, by the sequencer: generating the second address to specify a row of the D rows; generating the control signal to select the first data input of the multiplexed register of the N PUs; and generating the first address to specify an initial row of the W rows; and subsequently, for each row of M rows of the W rows successive to the initial row, the sequencer: generating the control signal to select the second data input of the multiplexed register of the N PUs to cause the multiplexed registers of the N PUs to collectively operate as an N-word rotater; and generating the first address to specify the row of the M rows, M is a positive integer. 14. The method of claim 13, further comprising: for each of the initial row and M rows: multiplying, by the arithmetic unit, the second and third inputs to generate a product and adding the product to the first input to generate the result stored in the accumulator. 15. The method of claim 13, further comprising: each PU also includes an activation function unit (AFU) that receives the output of the accumulator and performs an activation function thereon to generate a second result that is a same bit-width as each of the N data words; and generating, by the sequencer, the second address to specify a row of the second memory to which the N PUs write their second results to corresponding words of the N data words of the row of the second memory specified by the second address. 16. The method of claim 13, further comprising: for each of J clock cycles: generating, by the sequencer, the second address to specify a different row of the second memory to which the N PUs write a different word of J words of the accumulator to corresponding words of the N data words of the row of the second memory specified by the second address, J is at least 2. 17. The method of claim 13, further comprising: the N PUs are grouped as L groups of J PUs each; and the apparatus also includes L activation function units (AFUs), each shared by the J PUs of a corresponding group of the L groups; and by each AFU of the L AFUs: receiving the output of the accumulator of a dynamically selected one of the J PUs of the corresponding group; and performing an activation function thereon to generate a second result that is a same bit-width as each of the N data words. 18. The method of claim 17, further comprising: the apparatus also includes a buffer that holds N words corresponding to the N PUs; and receiving, by the N words of the buffer, the second results generated by the L AFUs in response to said performing the activation function on the received output of the accumulator of the corresponding N PUs. 19. The method of claim 18, further comprising: after the buffer receives the N second results, by the sequencer: generating the second address to specify a row of the second memory to which the buffer writes the N second results. 20. The method of claim 17, further comprising: for each of J clock cycles, for each group of the L groups: selecting, by the sequencer, one of the J PUs of the group for provision of the output of its accumulator to the corresponding one of the L AFUs for generation of the second result. 21. The method of claim 13, further comprising: clearing, by the sequencer, the accumulator of the N PUs to zero prior to the arithmetic unit storing an initial instance of the result in the accumulator. 22. 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 array of N processing units (PU) each having: an accumulator having an output; an arithmetic unit having first, second and third inputs and that performs an operation thereon to generate a result to store in the accumulator, the first input receives the output of the accumulator; a weight input that is received by the second input to the arithmetic unit; and a multiplexed register having first and second data inputs, an output received by the third input to the arithmetic unit, and a control input that controls selection of the first and second data inputs; and the output of the multiplexed register is also received by the second data input of the multiplexed register of an adjacent PU, the multiplexed registers of the N PUs collectively operate as an N-word rotater when the control input specifies the second data input; second program code for specifying a first memory that holds W rows of N weight words and provides the N weight words of a row of the W rows to the corresponding weight inputs of the N PUs of the PU array and that has a first address input that specifies a row of the W rows; third program code for specifying a second memory that holds D rows of N data words and provides the N data words of a row of the D rows to the corresponding first data inputs of the multiplexed register of the N PUs of the PU array and that includes a second address input that specifies a row of the D rows; and fourth program code for specifying a sequencer that generates a control signal provided to the control input of the multiplexed register of the N PUs and that generates first and second addresses provided to the first and second address inputs, respectively.