Answer from cs61c-ei (Jing Chen 16669246) for Question 3 The separate Add unit is used for branch instructions and computes branch target as the sum of the increment PC and the sign-indexed, lower 16 bits of the instruction shifted left 2 bits. It would not be possible for a single ALU to do the functions of the ALU and the Adder. The reason for this is that all branch datapaths must do two operations of 1) computing the branch target address (done with Adder) and 2) comparing register contents. (done with ALU) . Because adders are logic units that have no state, there will be no way for a single ALU to handle two operations and remember the value calculates in the first one.