Re: process max virtual memory limit in amd64?
On Fri, Jun 25, 2004 at 04:30:36PM +0300, Alexander Rapp wrote:
> Anders Fugmann wrote:
> >Does anyone know why there is a limitation of 48 bits on the virtual
> >address space, and if it is technically possible to have a 64 bit
> >address space on the AMD64 architecture?
> I was under the impression that memory addressing was limited to 48bits
> on today's amd64s to increase efficiency/performance. Longer addresses
> take up more space in cache and more bandwidth on the bus. By
> decreasing the size of every single memory request by 16 bits, more
> instructions can be fit in cache and more can be transmitted in a given
> time. When allocations of over 256TB become necessary, the architecture
> is designed to support longer addresses as well.
pointers are 64bits on AMD64. It's just that the top 16bits are all zero,
until AMD makes CPUs that do something with them. Only the kernel will have
to change to accommodate that, though. User-space programs won't have to be
re-compiled. So, code is already leaving space for the extra bits, and
transmitting them over the bus. No savings there, just stuff inside the CPU
that deals with addresses, as others have described.
The no-recompiling point is true as long as you don't do anything perverse
like using the high bits of addresses for your own purposes. I can't find
it now, but I remember reading (maybe in the jargon file?) about an old IBM
system where the upper bits of addresses were reserved for future use, but
people started using them to hold info about what was being pointed to, or
something. Just to pack more data into limited memory. When a new system
came out in which those address bits weren't ignored anymore, the programs
had to be re-written. So don't repeat that mistake on AMD64!
#define X(x,y) x##y
Peter Cordes ; e-mail: X(peter@cor , des.ca)
"The gods confound the man who first found out how to distinguish the hours!
Confound him, too, who in this place set up a sundial, to cut and hack
my day so wretchedly into small pieces!" -- Plautus, 200 BC