Overall average was 57.5% (st. dev. 14.7%; range 20.0-84.0%). Average scores by problem were 1: 10.6, 2: 18.0, and 3: 15.5, 4: 13.4 points (out of 25 points each).

Partial solutions:

Q1. Each of the three steps, ISSUE, EXECUTE, and WRITE RESULT should have been described in the context of Tomasulo’s algorithm. Each type of hazard – structural, WAR, WAW, RAW – should have been addressed, explaining how each type of hazard is avoided and at which step(s). Your descriptions should have included the role of reservation stations, register renaming, and the common data bus (CDB). Since Tomasulo has its own way of addressing WAW and WAR hazards, a little extra explanation was expected on these points. You did not need to give extremely detailed descriptions – but you did need to hit all these points for full credit.

Q2. 20 cycles. Didn’t get too nit-picky about details. Tabular presentation was expected, indicating activity for two memory references, two FP ops, and one integer or branch op (five columns). You should have numbered rows in the table or given a total number of cycles.

Q3. I won’t give the whole table here. Here are some partial answers. You should be able to complete the table with these hints. Iteration 1, L.D. F2,0(R1) issues at 1, executes at 2, reads at 3, writes to CDB at 4, and commits at 5. Iteration 2 L.D. F2,0(R1) issues at 6, executes at 7, reads at 8, writes to CDB at 9, and commits at 16. Iteration 2, BNEZ R1,Loop issues at 10, executes at 13, and commits at 21.

Q4. a) 7 mispredictions. b) 32K bits; 4K entries.