Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 913
er4z0r Avatar asked Jul 16 '11 11:07

er4z0r


People also ask

How long is x86-64 address?

The AMD64 architecture defines a 64-bit virtual address format, of which the low-order 48 bits are used in current implementations. This allows up to 256 TiB (248 bytes) of virtual address space.

What is a 48-bit address?

A 48-bit memory address can directly address every byte of 256 terabytes of storage. 48-bit can refer to any other data unit that consumes 48 bits in width. Examples include 48-bit CPU and ALU architectures are those that are based on registers, address buses, or data buses of that size.

What is the address space of the x86?

x86-64 address spaces The x86-64 architecture is 64-bit: registers (and addresses) are 64 bits wide. However, virtual addresses on current x86-64 processors only have 48 meaningful bits. This means that not all 64-bit patterns correspond to meaningful virtual addresses.

What is the size of virtual address space in 64-bit systems?

In 64-bit Windows, the theoretical amount of virtual address space is 2^64 bytes (16 exabytes), but only a small portion of the 16-exabyte range is actually used.


1 Answers

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.

like image 180
jalf Avatar answered Sep 24 '22 08:09

jalf