Q13.
4.21 Consider a version of the pipeline from Section 4.5 that does not handle
data hazards (i.e., the programmer is responsible for addressing data hazards by
inserting NOP instructions where necessary). Suppose that (after optimization)
a typical n-instruction program requires an additional $4 \times n$ NOP instructions to
correctly handle data hazards.
4.21.1 [5] <§4.5> Suppose that the cycle time of this pipeline without forwarding
is 250 ps. Suppose also that adding forwarding hardware will reduce the number
of NOPs from $4 \times n$ to $0.05 \times n$, but increase the cycle time to 300 ps. What is the
speedup of this new pipeline compared to the one without forwarding?
4.21.2 [10] <§4.5> Different programs will require different amounts of NOPs.
How many NOPs (as a percentage of code instructions) can remain in the typical
program before that program runs slower on the pipeline with forwarding?
4.21.3 [10] <§4.5> Repeat 4.21.2; however, this time let $x$ represent the number
of NOP instructions relative to $n$. (In 4.21.2, $x$ was equal to .4.) Your answer will
be with respect to $x$.
4.21.4 [10] <§4.5> Can a program with only $0.075 \times n$ NOPs possibly run faster
on the pipeline with forwarding? Explain why or why not.
4.21.5 [10] <§4.5> At minimum, how many NOPs (as a percentage of code
instructions) must a program have before it can possibly run faster on the pipeline
with forwarding?