Answer from cs61c-cj (Peter Lau 16539384) for Question 3 This add unit helps compute the branch target address of a branch instruction. It would be possible to use a single ALU to do the functions of both the adder and the ALU but this would come at a performance cost and possibly hardware cost. Since the ALU can only performance one operation at a time, a single ALU would have to compute the branch condition and the target address one after the other. While computing the second item, it must "remember" the first answer, which would require some state elements.