actually .....CPU is boss.....so he will always say things like give me 1st page of process...then 2nd one then so on....
for next process/task CPU says same ...that is give 1st instruction...2nd and 3rd so on....so CPU always generate a virtual address...
When you see effective address ...its actual address of chip/place of RAM where the instruction actually resides....
we have a memory management unit. which will map that virtual address into physical address..best example is you can see paging..in OS , where CPU gives a virtual address say 1 but actually that 1st instruction may reside on any space present in RAM as per availability.....hence MMU convert virtual address into physical one...and then provides data to CPU..
SO CPU = ALWAYS VIRTUAL ADDRESS....
EFFECTIVE ADDRESS="ACTUAL PHYSICAL LOCATION OF INSTRUCTION / DATA"..