I am studying virtual memory on x86-64: 4 KiB pages, 48-bit virtual addresses and a four-level page table. If every memory access has to be translated by walking four levels of tables, it seems each load would need four extra memory reads, which cannot be how it works in practice.
How is the address actually split up, where does the TLB come in, and why are the virtual addresses 48 bits and not the full 64?




