Remix.run Logo
bonzini 4 days ago

In practice it's over 64 TiB because kernels often use a quarter of the available addressing space (half of the kernel addressing space) to map the physical addresses (e.g. FFFFC000_12345678 maps physical address 0x12345678). So 48 virtual address bits can be used with up to 2^46 bytes of RAM.

hinkley 4 days ago | parent [-]

And how long has 48 bit addressing been de rigeur? Not so long ago we had processors that could address 40 bits of address space. Or was that 38?

winocm 4 days ago | parent | next [-]

At least since maybe the DEC Alpha 21264. It could address 48-bits of VA space, but that comes with caveats due to PALcode specific intricacies.

I think VMS (or was it Tru64?) uses this mode, but many other OSes just use 43-bit or 40-bit addressing. Realistically though, I don’t think many users would be using workloads that addressed more than 38-bits worth of contiguous VA space in 1998-1999.

4 days ago | parent | prev | next [-]
[deleted]
loeg 4 days ago | parent | prev [-]

amd64 has had 48-bit addressing / 4-level paging from the beginning.

hinkley 3 days ago | parent [-]

I must be thinking of intel’s failed 64 bit attempts prior to amd64 winning.

wittystick 2 days ago | parent [-]

Physical addresses may be limited to 40 bits, but 48-bit virtual addresses have been the norm since 4-level paging.