FPGA specialist processing block for machine learning
The present disclosure describes a digital signal processing (DSP) block that includes a plurality of columns of weight registers and a plurality of inputs configured to receive a first plurality of values and a second plurality of values. The first plurality of values is stored in the plurality of columns of weight registers after being received. Additionally, the DSP block includes a plurality of multipliers configured to simultaneously multiply each value of the first plurality of values by each value of the second plurality of values.
1. A digital signal processing (DSP) block comprising:
a plurality of columns of weight registers;
a plurality of inputs configurable to receive a first plurality of values and a second plurality of values, wherein the first plurality of values is stored in the plurality of columns of weight registers after being received;
conversion circuitry configurable to receive a shared exponent for the second plurality of values and convert fixed-point values to floating-point values based on the shared exponent; and
a plurality of multipliers configurable to simultaneously multiply each value of the first plurality of values by each value of the second plurality of values.
2. The DSP block of claim 1 , wherein values of the first plurality of values and the second plurality of values each comprise one to eight integer bits.
3. The DSP block of claim 1 , wherein the plurality of columns of weight registers comprises three columns of weight registers.
4. The DSP block of claim 1 , wherein the first plurality of values is stored in the plurality of columns of weight registers prior to receiving the second plurality of values.
5. The DSP block of claim 1 , wherein:
the plurality of multipliers is configurable to generate a third plurality of values by multiplying each value of the first plurality of values by each value of the second plurality of values and
the DSP block comprises compression circuitry configurable to determine a sum of the third plurality of values.
6. The DSP block of claim 5 , wherein the DSP block is configurable to receive a fourth plurality of values from a second DSP block and determine a sum of the third plurality of values and the sum of the third plurality of values.
7. The DSP block of claim 1 , wherein the DSP block is included within a field-programmable gate array (FPGA).
8. An integrated circuit device, comprising:
a digital signal processing (DSP) block, comprising:
a plurality of columns of registers;
a plurality of inputs configurable to receive a first plurality of values and a second plurality of values, wherein the first plurality of values is stored in the plurality of columns of registers after being received;
conversion circuitry configurable to receive a shared exponent for the second plurality of values and convert fixed-point values to floating-point values based on the shared exponent and
a plurality of multipliers configurable to simultaneously multiply each value of the first plurality of values by each value of the second plurality of values.
9. The integrated circuit device of claim 8 , wherein:
the first plurality of values and the second plurality of values are fixed-point values; and
the DSP block is configurable to perform floating-point and fixed-point addition.
10. The integrated circuit device of claim 9 , wherein the DSP block is configurable to perform fixed-point addition involving:
one or more values determined based on the first and second pluralities of values; and
a third plurality of values received from a second DSP block communicatively coupled to the DSP block.
11. The integrated circuit device of claim 8 , wherein the first plurality of values, the second plurality of values, or both are generated from a third plurality of values that are more precise than the first plurality of values, the second plurality of values, or both.
12. The integrated circuit device of claim 8 , wherein the first plurality of values is stored in a single column of the plurality of columns of registers.
13. The integrated circuit device of claim 8 , comprising a programmable logic device, wherein the programmable logic device comprises the DSP block.
14. The integrated circuit device of claim 13 , wherein the programmable logic device comprises a field-programmable gate array (FPGA).
15. A system comprising:
a first digital signal processing (DSP) block; and
a second DSP block communicatively coupled to the first DSP block, wherein the second DSP block comprises:
a plurality of columns of weight registers;
a plurality of inputs configurable to receive a first plurality of values and a second plurality of values, wherein the first plurality of values is stored in the plurality of columns of weight registers after being received;
conversion circuitry configurable to receive a shared exponent for the second plurality of values and convert fixed-point values to floating-point values based on the shared exponent and
a plurality of multipliers configurable to simultaneously multiply each value of the first plurality of values by each value of the second plurality of values.
16. The system of claim 15 , wherein the second DSP block is configurable to simultaneously perform thirty multiplication operations when simultaneously multiplying each value of the first plurality of values by each value of the second plurality of values.
17. The system of claim 15 , wherein the first DSP block is configurable to receive one or more values from the second DSP block and determine a sum for each column of the plurality of columns of weight registers of the second DSP block used to store the first plurality of values.
18. The system of claim 15 , comprising:
a programmable logic device that comprises the first and second DSP blocks; and
an integrated circuit device communicatively coupled to the programmable logic device.
19. The DSP block of claim 1 , wherein the DSP block is included within an integrated circuit device that comprises programmable logic.
20. The DSP block of claim 1 , wherein the first plurality of values, the second plurality of values, or both are generated from a third plurality of values that are more precise than the first plurality of values, the second plurality of values, or both.