Virtual addressing in os

If programme loaded into the ram at the phsycal spaces and the cpu reads addresses from ram so what is the purpose of the virtual address spacing. At the end cpu will read everything from ram's phsycal addrssses. I mean does mmu converts ram's phsycal address into virtual address and sends it to the cpu? Thanks in advance.