I'm currently learning about data path in a CPU and having a hard time understanding the functionality of G,L, H parts in the following image. Why have those parts been used there?
G multiplexer: Selects the second argument to the ALU. Possible values are another register's value or the immediate value of the instruction.
L multiplexer: Selects the value to write into the destination register. Possible values are the value of the addressed RAM register or the result from the ALU.
H shifter: Multiplies the immediate value of the instruction by 4, as the PC needs.