I'm working on a problem from the Digital Design and Computer Architecture course on Systolic arrays.
The question set up is as follows:
The following diagram is a systolic array that performs the multiplication of two 4-bit binary numbers (a and b). For example, if a=1110 and b=1011, the result of the multiplication is c=10011010:
The input to the systolic arrays is through the AND gates. The figure shows which bits of the two numbers a and b are inserted into each AND gate. However, the figure does not indicate in which cycle each input is issued. Make the folowing assumptions:
- The latency of each adder is one cycle.
- Vertical arrows propagate the sum to the next adder.
- Diagonal arrows propagate the carry to the next adder.
- Horizontal arrows propagate the output of the AND gates in each row.
- An adder adds the value of its three inputs (vertical, diagonal and horizontal inputs)
- An adder can hold a value for only one cycle.
The question is the following:
How many cycles does it take to perform one multiplication of two 4-bit binary numbers in this systolic array? Indicate 1) in which cycle each bit is inputted in the systolic array and 2) in which cycle each bit of the result is produced.
It's probably worth also pointing out that the subscripts are apparently little endian.
I've been trying to wrap my head around the order of inputs to the Systolic array, but I can't figure out how I'm supposed to think about it.
How are you supposed to think about a problem like this when a lot is happening in parallel?