IP Library › Granted Patent US 11,551,055
Granted Patent B2
US 11,551,055 · App. 16/842,700 · Granted Jan 10, 2023

Neural processor

Inventors: Lei Wang (Burlingame, CA); Ilia Ovsiannikov (Porter Ranch, CA)
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,551,055
App. No.
16/842,700
Filed
Apr 7, 2020
Granted
Jan 10, 2023
Kind
B2
Examiner
HSU, JONI
Art Unit
2611
USPC
706/27
Abstract

A processor includes a register, a non-zero weight value selector and a multiplier. The register holds a first group of weight values and a second group of weight values. Each group of weight values includes at least one weight value, and each weight value in the first group of weight values corresponding to a weight value in the second group of weight values. The non-zero weight value selector selects a non-zero weight value from a weight value in the first group of weight values or a non-zero weight value in the second group of weight values that corresponds to the weight value in the first group of weight values. The multiplier multiplies the selected non-zero weight value and an activation value that corresponds to the selected non-zero weight value to form an output product value.

Claims (43)

1. A processor, comprising:

a shuffler that shuffles sparse activation data to homogenize the sparse activation data with respect to the sparse activation data prior to shuffling;

a register that holds a first group of weight values and a second group of weight values, the first group of weight values and the second group of weight values being arranged in the register in a manner corresponding to shuffling of the sparse activation data, each group of weight values comprising at least one weight value, and each weight value in the first group of weight values corresponding to a weight value in the second group of weight values;

a non-zero weight value selector that selects a non-zero weight value from the first group of weight values or a non-zero weight value from the second group of weight values that corresponds to the weight value in the first group of weight values; and

a multiplier that multiplies the selected non-zero weight value and an activation value from the homogenized sparse activation data that corresponds to the selected non-zero weight value to form an output product value.

2. The processor according to claim 1 , wherein the weight value in the first group of weight values and the weight value in the second group of weight values that corresponds to the weight value in the first group of weight values both comprise zero-value weight values, and

wherein the non-zero weight value selector controls the multiplier to prevent the multiplier from forming the output product value.

3. The processor according to claim 1 , wherein a first weight value in the first group of weight values and the weight value in the second group of weight values that corresponds to the first weight value in the first group of weight values both comprise zero-value weight values, and

wherein the non-zero weight value selector selects a non-zero weight value from a second weight value in the first group of weight values and a second weight value in the second group of weight values that corresponds to the second weight value in the first group of weight values, the second weight value in the first group of weight values being different from the first weight value in the first group of weight values.

4. The processor according to claim 1 , wherein the first group of weight values includes nine weight values, and the second group of weight values comprises nine weight values.

5. The processor according to claim 1 , further comprising a multiplexer coupled between the register and the multiplier, and

wherein the non-zero weight value selector controls the multiplexer to couple the selected non-zero weight value to the multiplier.

6. The processor according to claim 1 , wherein the processor is part of a neural processor, and

wherein the shuffler comprises N lanes of activation data and M=log 2(N) columns of multiplexers, and the shuffler provides 2 N*log 2(N)/2 permutations.

7. The processor according to claim 1 , wherein the selected non-zero weight value comprises a uint8 value.

8. A processor, comprising:

a shuffler that shuffles sparse activation data to homogenize the sparse activation data with respect to the sparse activation data prior to shuffling;

a register that receives a plurality of N weight values in which N is a positive even number greater than 1, the plurality of N weight values being logically arranged into a first group and a second group, the first group and the second group being of equal size, each weight value in the first group corresponding to a weight value in the second group, weight values in the first group and weight values in the second group being arranged in the register in a manner corresponding to shuffling of the sparse activation data;

a multiplexer coupled to the register, the multiplexer selecting and outputting a non-zero weight value from a weight value in the first group or a weight value in the second group that corresponds to the weight value in the first group; and

a multiplier that multiplies the non-zero weight value output from the multiplexer and an activation value from the homogenized sparse activation data that corresponds to the non-zero weight value output from the multiplexer to form an output product value.

9. The processor according to claim 8 , further comprising a weight value selector that controls the multiplexer to output the non-zero weight value based on whether a weight value in the first group equals a zero value and whether a weight value in the second group that corresponds to the weight value in the first group equals a zero value.

10. The processor according to claim 9 , wherein the weight value in the first group and the weight value in the second group that corresponds to the weight value in the first group both comprise zero-value weight values, and

wherein the weight value selector further controls the multiplier to prevent the multiplier from forming the output product value.

11. The processor according to claim 9 , wherein a first weight value in the first group and the weight value in the second group that corresponds to the first weight value in the first group both comprise zero-value weight values, and

wherein the weight value selector selects a non-zero weight value from a second weight value in the first group and a second weight value in the second group that corresponds to the second weight value in the first group, the second weight value in the first group being different from the first weight value in the first group.

12. The processor according to claim 8 , wherein the first group includes nine weight values, and the second group comprises nine weight values.

13. The processor according to claim 8 , wherein the processor is part of a neural processor, and

wherein the shuffler comprises N lanes of activation data and M=log 2(N) columns of multiplexers, and the shuffler provides 2 N*log 2(N)/2 permutations.

14. The processor according to claim 8 , wherein the non-zero weight value output from the multiplexer comprises a uint8 value.

15. A processor, comprising:

a shuffler that shuffles sparse activation data to homogenize the sparse activation data with respect to the sparse activation data prior to shuffling;

a first register that receives a plurality of N weight values in which N is a positive even number greater than 1, the plurality of N weight values being logically arranged into a first group and a second group, the first group and the second group being of equal size, each weight value in the first group corresponding to a weight value in the second group, and weight values in the first group and weight values in the second group being arranged in the first register in a manner corresponding to shuffling of the sparse activation data;

a multiplexer coupled to the first register, the multiplexer selecting and outputting a non-zero weight value from a weight value in the first group or a weight value in the second group that corresponds to the weight value in the first group;

a second register that receives a plurality of activation values shuffled by the shuffler; and

a multiplier coupled to the multiplexer and the second register, the multiplier multiplying the non-zero weight value output from the multiplexer and an activation value received from the second register that corresponds to the non-zero weight value output from the multiplexer to form an output product value.

16. The processor according to claim 15 , further comprising weight value selector that controls the multiplexer to output the non-zero weight value based on whether a weight value in the first group equals a zero value and whether a weight value in the second group that corresponds to the weight value in the first group equals a zero value.

17. The processor according to claim 16 , wherein the weight value in the first group and the weight value in the second group that corresponds to the weight value in the first group both comprise zero-value weight values, and

wherein the weight value selector further controls the multiplier to prevent the multiplier from forming the output product value.

18. The processor according to claim 16 , wherein a first weight value in the first group and the weight value in the second group that corresponds to the first weight value in the first group both comprise zero-value weight values, and

wherein the weight value selector selects a non-zero weight value from a second weight value in the first group and a second weight value in the second group that corresponds to the second weight value in the first group, the second weight value in the first group being different from the first weight value in the first group.

19. The processor according to claim 15 , wherein the first group includes nine weight values, and the second group comprises nine weight values.

20. The processor according to claim 15 , wherein the processor is part of a neural processor; and

wherein the shuffler comprises N lanes of activation data and M=log 2(N) columns of multiplexers, and the shuffler provides 2 N*log 2(N)/2 permutations.

Continuity (8)
Continuation In Part 16446610 · Jun 19, 2019
Provisional Application 62689008 · Jun 22, 2018
Provisional Application 62798297 · Jan 29, 2019
Provisional Application 62841590 · May 1, 2019
Provisional Application 62841606 · May 1, 2019
Provisional Application 62835496 · Apr 17, 2019
Provisional Application 62841819 · May 1, 2019
Related Publication 20200234099A1 · Jul 23, 2020