Answer from cs61c-aj (Kevin Li 15855812) for Question 3 The add unit is used to calculate what the branch target address should be. It basically adds the PC+4 to the immediate to know the actual address for the branch. It needs to be there because the ALU calculates whether the two registers are equal by subtracting one another and seeing if the difference is 0 and then it replaces the outcome of the adder with the PC if it is 0 and otherwise it ignores it. It would slow down the process without the adder. Since the hardware is implemented where the ALU replaces the branch address then the branch address must be available when ALU is done which means the adder must take care of it.