Why do x86-64 systems have only a 48 bit virtual address space?

er4z0r picture er4z0r · Jul 16, 2011 · Viewed 45.4k times · Source

In a book I read the following:

32-bit processors have 2^32 possible addresses, while current 64-bit processors have a 48-bit address space

My expectation was that if it's a 64-bit processor, the address space should also be 2^64.

So I was wondering what is the reason for this limitation?

Answer

jalf picture jalf · Jul 16, 2011

Because that's all that's needed. 48 bits give you an address space of 256 terabyte. That's a lot. You're not going to see a system which needs more than that any time soon.

So CPU manufacturers took a shortcut. They use an instruction set which allows a full 64-bit address space, but current CPUs just only use the lower 48 bits. The alternative was wasting transistors on handling a bigger address space which wasn't going to be needed for many years.

So once we get near the 48-bit limit, it's just a matter of releasing CPUs that handle the full address space, but it won't require any changes to the instruction set, and it won't break compatibility.