Polytechnic Institute of NYU
Handout No : 6
October 6, 2010
October 20, 2010
‚ Related portions of Chapters 2, 3 and Appendces A, F and G of the Hennessy book
‚ Related portions of Chapter 7 of the Jordan book
problems three of which are developed from the Hennessy book.
Solve all homework and exam problems as shown in class and past exam solutions
Consider the piece of code studied in Problem 3 of Homework I.
This code is for the
application we discussed in class :
Assume that the MIPS is implemented as the
2-way superscalar hardware-speculative
sulo algorithm machine as discussed in class.
That is, this is
machine model number 5.
A pair of
instructions is issued per cycle, provided that static issuing is preserved.
be committed in order per cycle provided that they are at the head of the ROB.
Assume also that the functional unit timings are as listed on page A-72 of the Hennessy book ;
the number of reservation station buffers for FP operations is as given in class ; the number of
CDB buses is as given class ; there is a Branch Unit in the EX stage for calculating its effective
address and determining the condition ; there is also additional branch prediction hardware in and
out of the pipeline ; there are enough functional units for integer instructions not to cause stalls ;
the L1 cache memories take
clock period each and there are
cache misses ; the L1 data
cache memory allows two memory accesses for data per clock period if there are no address con-
Assume that there is only
Then, in which clock period, will the
iteration of the
above loop be completed ?
That is, what is the last clock period in which the Commit stage of an
instruction from the
iteration be done last ?
which instructions are flushed out of
Indicate any assumptions made during the execution of the loop, if a situation not
discussed in class is encountered.
To answer it, continue the following table :
; load X[i]
F0, F0, F2
; multiply a * X[i]
; load Y[i]
F0, F0, F4
; add a * X[i[ + Y[i]
; store Y[i]
R1, R1, #(-8)
; decrement X index
R2, R2, #(-8)
; decrement Y index
; loop if not done