Answer from cs61c-el (David Tung 16479725) for Question 1 A branch delay slot is where you insert an instruction between calculating a branch, and calculating the statement that follows it (or what it branches too). Since when you calculate a branch, you will not reach whether the branch should be followed until the ALU, there is a stall of one cycle between evaluating a branch, and to start evaluating the instruction it should follow. This is solved by a branch delay slot, in which a statement which can be evaluated both before and after the branch is inserted, so that there will not be a stall between evaluating a branch, and evaluating its next instruction; the time is not wasted, but is instead used by the instruction in the branch delay slot.