A processor has an instruction fetch unit that fetches ISA instructions from memory and execution units that perform operations on instruction operands to generate results according to the processor's ISA. A hardware neural network unit (NNU) execution unit performs computations associated with artificial neural networks (ANN). The NNU has an array of ALUs, a first memory that holds data words associated with ANN neuron outputs, and a second memory that holds weight words associated with connections between ANN neurons. Each ALU multiplies a portion of the data words by a portion of the weight words to generate products and accumulates the products in an accumulator as an accumulated value. Activation function units normalize the accumulated values to generate outputs associated with ANN neurons. The ISA includes at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A processor having an instruction set architecture (ISA), the processor comprising: an instruction fetch unit that controls fetches of instructions of the ISA from memory into the processor; a plurality of execution units that perform operations on operands of the instructions to generate results of the instructions according to the ISA; the plurality of execution units includes a hardware neural network unit (NNU) to perform computations associated with artificial neural networks (ANN), the NNU comprising: an array of arithmetic logic units (ALU); a first memory, coupled to the ALU array, that holds data words associated with ANN neuron outputs; a second memory, coupled to the ALU array, that holds weight words associated with connections between ANN neurons; each ALU multiplies a portion of the data words by a portion of the weight words to generate products and accumulates the products in an accumulator as an accumulated value; and a plurality of activation function units that normalize the accumulated values to generate outputs associated with ANN neurons; and the ISA includes at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories of the NNU. 2. The processor of claim 1, the NNU further comprises: during a first instance, the first memory holds first data words associated with ANN neuron outputs of a first ANN layer and the second memory holds first weight words associated with connections between ANN neurons of the first ANN layer and ANN neurons of a second ANN layer, and the ALUs generate the accumulated values using the first weight words and the first data words, and the plurality of activation function units generate first outputs associated with the ANN neurons of the second ANN layer; the NNU writes the first outputs associated with the ANN neurons of the second ANN layer to the first memory; and during a second instance, the second memory holds second weight words associated with connections between the ANN neurons of the second ANN layer and ANN neurons of a third ANN layer, and the ALUs generate the accumulated values using the second weight words and the first outputs associated with the ANN neurons of the second ANN layer written to the first memory, and the plurality of activation function units generate second outputs associated with the ANN neurons of the third ANN layer. 3. The processor of claim 2, the NNU further comprises: the NNU writes the second outputs associated with the ANN neurons of the third ANN layer to the first memory; and the ISA includes at least one instruction that instructs the processor to read from the first memory the second outputs written by the NNU. 4. The processor of claim 1, the NNU further comprises: a program memory that holds instructions of an NNU program, the instructions of the NNU program are of an instruction set distinct from the instructions of the processor ISA; and the ISA includes at least one instruction that instructs the processor to write to the program memory the instructions of the NNU program. 5. The processor of claim 4, the NNU further comprises: the ISA includes at least one instruction that instructs the processor to start execution of the instructions of the NNU program written to the program memory. 6. The processor of claim 5, the NNU further comprises: the at least one instruction that instructs the processor to start execution of the instructions of the NNU program specifies an address of a first instruction of the NNU program at which to start execution. 7. The processor of claim 4, the NNU further comprises: the ISA includes at least one instruction that instructs the processor to pause execution of the instructions of the NNU program. 8. The processor of claim 4, the NNU further comprises: the ISA includes at least one instruction that instructs the processor to read a status of execution of the instructions of the NNU program. 9. The processor of claim 4, the NNU further comprises: the ISA includes at least one instruction that instructs the processor to generate an interrupt upon completion of execution of the NNU program. 10. The processor of claim 1, the NNU further comprises: the at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories of the NNU comprises: a specifier that specifies an architectural register that holds an address of the first memory or the second memory to which the NNU writes the respective data words or weight words. 11. The processor of claim 1, the NNU further comprises: the at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories of the NNU comprises: a specifier that specifies one or more architectural registers that hold respective data words or weight words to be written to the first memory or the second memory. 12. The processor of claim 11, the NNU further comprises: the one or more architectural registers are media registers of the x86 ISA. 13. The processor of claim 1, the NNU further comprises: the processor is compatible with the x86 ISA. 14. The processor of claim 1, the NNU further comprises: a buffer that is a same bit width as a row of the second memory; the buffer receives a plurality of sets of weight words in response to a plurality of instances of the at least one instruction; and the buffer concurrently writes the plurality of sets of weight words to a row of the second memory. 15. The processor of claim 14, the NNU further comprises: architectural registers that hold weight words; the at least one instruction comprises: a specifier that specifies one or more of the architectural registers, collectively the one or more architectural registers have a second bit width; a bitmask that includes a bit corresponding to each chunk of a plurality of chunks of the buffer, each chunk being the second bit width; and in response to a single instance of the at least one instruction, the buffer receives the weight words held in the architectural registers into each chunk of the plurality of chunks of the buffer that has its corresponding bit of the bitmask set. 16. A method for operating a processor having an instruction set architecture (ISA), an instruction fetch unit, and a plurality of execution units that includes a hardware neural network unit (NNU), the method comprising: controlling, by the instruction fetch unit, fetching of instructions of the ISA from memory into the processor; performing, by the plurality of execution units, operations on operands of the instructions to generate results of the instructions according to the ISA; performing, by the hardware NNU, computations associated with artificial neural networks (ANN), comprising: holding, by a first memory, coupled to an array of arithmetic logic units (ALU), data words associated with ANN neuron outputs; holding, by a second memory coupled to the ALU array, weight words associated with connections between ANN neurons; multiplying, by each ALU, a portion of the data words by a portion of the weight words to generate products and accumulating the products in an accumulator as an accumulated value; and normalizing, by a plurality of activation function units, the accumulated values to generate outputs associated with ANN neurons; and instructing, by at least one instruction included in the ISA, the processor to write data words and the weight words to the respective first and second memories of the NNU. 17. The method of claim 16, further comprises: during a first instance, the first memory holding first data words associated with ANN neuron outputs of a first ANN layer and the second memory holding first weight words associated with connections between ANN neurons of the first ANN layer and ANN neurons of a second ANN layer, and the ALUs generating the accumulated values using the first weight words and the first data words, and the plurality of activation function units generating first outputs associated with the ANN neurons of the second ANN layer; writing, by the NNU, the first outputs associated with the ANN neurons of the second ANN layer to the first memory; and during a second instance, the second memory holding second weight words associated with connections between the ANN neurons of the second ANN layer and ANN neurons of a third ANN layer, and the ALUs generating the accumulated values using the second weight words and the first outputs associated with the ANN neurons of the second ANN layer written to the first memory, and the plurality of activation function units generating second outputs associated with the ANN neurons of the third ANN layer. 18. The method of claim 17, further comprises: writing, by the NNU, the second outputs associated with the ANN neurons of the third ANN layer to the first memory; and instructing, by at least one instruction of the ISA, the processor to read from the first memory the second outputs written by the NNU. 19. The method of claim 16, further comprises: holding, by a program memory, instructions of an NNU program, the instructions of the NNU program are of an instruction set distinct from the instructions of the processor ISA; and instructing, by at least one instruction included in the ISA, the processor to write to the program memory the instructions of the NNU program. 20. The method of claim 16, further comprises: the at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories of the NNU comprises: a specifier that specifies an architectural register that holds an address of the first memory or the second memory to which the NNU writes the respective data words or weight words. 21. The method of claim 16, further comprises: the at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories of the NNU comprises: a specifier that specifies one or more architectural registers that hold respective data words or weight words to be written to the first memory or the second memory. 22. The method of claim 16, further comprises: receiving, by a buffer that is a same bit width as a row of the second memory, a plurality of sets of weight words in response to a plurality of instances of the at least one instruction; and writing, by the buffer, concurrently the plurality of sets of weight words to a row of the second memory. 23. The method of claim 22, further comprises: the at least one instruction comprises: a specifier that specifies one or more of architectural registers of the processor that hold weight words, collectively the one or more architectural registers have a second bit width; a bitmask that includes a bit corresponding to each chunk of a plurality of chunks of the buffer, each chunk being the second bit width; and receiving, by the buffer in response to a single instance of the at least one instruction, the weight words held in the architectural registers into each chunk of the plurality of chunks of the buffer that has its corresponding bit of the bitmask set. 24. 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 a processor having an instruction set architecture (ISA), the computer usable program code comprising: first program code for specifying an instruction fetch unit that controls fetches of instructions of the ISA from memory into the processor; and second program code for specifying a plurality of execution units that perform operations on operands of the instructions to generate results of the instructions according to the ISA; the plurality of execution units includes a hardware neural network unit (NNU) to perform computations associated with artificial neural networks (ANN), the NNU comprising: an array of arithmetic logic units (ALU); a first memory, coupled to the ALU array, that holds data words associated with ANN neuron outputs; a second memory, coupled to the ALU array, that holds weight words associated with connections between ANN neurons; each ALU multiplies a portion of the data words by a portion of the weight words to generate products and accumulates the products in an accumulator as an accumulated value; and a plurality of activation function units that normalize the accumulated values to generate outputs associated with ANN neurons; and the ISA includes at least one instruction that instructs the processor to write data words and the weight words to the respective first and second memories of the NNU.