Each of the identified problem will dealed with (this is how "engineers" operate :-))
Because the pipelined CPU is executing multiple instructions at once, there are multiple Instruction Registers....
NOTE: All registers (including Instruction Registers) are constructed with D-flipflops (very short write time - this is necessary to isolate the computation that is going on inside the various pipeline stages)
I.e., the memory can return the instruction within 1 CPU cycle
We will examine the 3 types of instruction more closer later and you can verify that the ID stage indeed has now obtain every possible operands for every possible assembler instruction.
Otherwise (instruction is load, store or branch), select the ADD function
NOTE: Both DMAR and PC (in IF stage) is tied to the address bus. So we must use tri-state-buffers with these registers to prevent burn-out.
Output select=1 if condition for branching has been met, and output select=0 otherwise.
If you follow the connection of the ALUo register to the IF stage, you can see that PC will be updated with the value in the ALUo register when select=1.
If Load instruction bit = 1, select LMDR register for C-bus output, and otherwise, select ALUo1 as C-bus output.