1) It needs the data to decode the instruction. It needs the address to figure out which instruction is next.2) A program is stored in RAM.3) I have no clue what you mean by a load consuming memory.
I mean the load operation the one that has 5 steps: fetch encode execute memory read. The load operation requires RAM in order to operate right?
In case the steps of executing an instruction are the part that is confusing you, the steps are based on the most complex instruction's needs and all instructions use the same steps. This is because the CPU is pipelined, so one instruction is executing its fetch while another instruction is executing its encode, etc.
Fetch is just getting the instruction (from cache, or RAM if not in cache, or generating a fault that results in a page load from disk if not in RAM).
Encode (usually referred to as decode) is decoding the instruction so the CPU knows what to do and assigning the registers that will get used.
Execute is where math and such happens, perhaps calculating the full address from an offset for a load operation.
Memory is where reads and writes to memory occur (again, from cache when possible, RAM if not in cache, etc.). This is where the actual loading of data from memory (RAM) into a register happens.
Read I assume is supposed to be write-back. There is no reading that occurs at that point, it's just saving the virtual registers back to the physical register file. I don't think this stage even exists on CPUs that lack register renaming.
It's worth noting that loading a constant (when such instructions exist) does not require data loaded from RAM as the constant is encoded in the instruction. So the "memory" stage of the pipeline would be a noop when loading a constant.