Slide 34 of 97
Notes:
Another important concept that we need to discuss is the amount of time it takes to actually execute instructions. All instructions execute in one cycle, but some have delay associated with availability of the result.
The multiply instruction has a one-cycle delay. When we multiply A0 and A1 together, the result is not available in that clock cycle. It appears in register A3 in the following clock cycle. We are still able to execute another multiply in the next clock cycle, so the functional unit capabilities are not wasted waiting on the result. However, the result is delayed until the following clock cycle for the multiply.
Most instructions don't have any delay . But the multiply, the load, and the branch have one, four, and five delay cycles associated with their results.
To understand what is occurring during this delay time, consider that during a load, data is being transferred from memory. Thus, the address of the location being read must be generated and sent to memory, there is a waiting period for the data value to come back, then the data value is read, and finally written into the register. These transactions take time, but the functional unit is not tied up for that amount of time. The instruction executes in one cycle, and only the result is delayed.