3 ms·
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 add
by bonzini 1y 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 1y agoAnd 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?
- deleted 1y ago[deleted]
- winocm 1y agoAt 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.
- loeg 1y agoamd64 has had 48-bit addressing / 4-level paging from the beginning.
- hinkley 1y agoI must be thinking of intel’s failed 64 bit attempts prior to amd64 winning.
- wittystick 1y agoPhysical addresses may be limited to 40 bits, but 48-bit virtual addresses have been the norm since 4-level paging.
- bonzini 1y agoYou're probably thinking of PAE (36 bit physical address space on 32 bit virtual address space). But Intel for quite some time had a 36 bit physical address space limit on 64-bit consumer processors, even if the virtual address space was 48 bits. I think it only changed 5 years ago or less.