I've got a question about virtual memory management, more specifically, the address translation.

When an application runs, the CPU receives instructions containing virtual memory addresses, and translates them into physical addresses via the page table.

My question is, since the page table also aside at a memory block, does that means the CPU has to access the memory twice in a single memory-access instruction? If the answer is no, then how does this actually work? Which part did I miss?

Could anyone give me some details about this?