Let the 8 instructions be labeled as I1 (ADD), I2 (MUL), I3 (ADD), I4 (MUL), I5 (ADD), I6 (MUL), I7 (ADD), and I8 (MUL).
Since register read occurs in the EX stage:
### 1. Without Operand Forwarding
A dependent instruction must wait until the producing instruction writes its result back in the WB stage. Thus, the dependent instruction's EX stage can only start in the cycle after the preceding instruction completes WB.
I1 (ADD): EX=3, MEM=4, WB=5 (completes at cycle 5)
I2 (MUL): EX1=6,EX2=7, MEM=8, WB=9 (completes at cycle 9)
I3 (ADD): EX=10, MEM=11, WB=12 (completes at cycle 12)
I4 (MUL): EX1=13,EX2=14, MEM=15, WB=16 (completes at cycle 16)
I5 (ADD): EX=17, MEM=18, WB=19 (completes at cycle 19)
I6 (MUL): EX1=20,EX2=21, MEM=22, WB=23 (completes at cycle 23)
I7 (ADD): EX=24, MEM=25, WB=26 (completes at cycle 26)
I8 (MUL): EX1=27,EX2=28, MEM=29, WB=30 (completes at cycle 30)
Execution time without operand forwarding=30 cycles ### 2. With Operand Forwarding
With operand forwarding, the result is available directly at the end of the EX stage to the EX stage of the next instruction:
I1 (ADD): EX=3 (result ready at end of cycle 3)
I2 (MUL): EX1=4,EX2=5 (result ready at end of cycle 5)
I3 (ADD): EX=6 (result ready at end of cycle 6)
I4 (MUL): EX1=7,EX2=8 (result ready at end of cycle 8)
I5 (ADD): EX=9 (result ready at end of cycle 9)
I6 (MUL): EX1=10,EX2=11 (result ready at end of cycle 11)
I7 (ADD): EX=12 (result ready at end of cycle 12)
I8 (MUL): EX1=13,EX2=14, MEM=15, WB=16 (completes at cycle 16)
Execution time with operand forwarding=16 cycles ### 3. Speedup Calculation
Speedup=1630=1.875≈1.88