AMD64 Canonical Address question
Posted: Fri May 21, 2010 5:30 am
Hello
As you probably know AMD decided that only 48 bit addresses are supported. As there are 64 bits the other 16bits are forced to be the same as the 47th bit. So you end up with virtual addresses 0000 0000 0000 0000 - 0000 7FFF FFFF FFFF FFFF and FFFF 8000 0000 0000 0000 - FFFF FFFF FFFF FFFF . This leaves a big hole in the middle.
My question is why didn't they just simply say bits 48 - 62 must always be zero???? I would have thought virtual address space of 0000 0000 0000 0000 - 0000 7FFF FFFF FFFF FFFF and 1000 0000 0000 0000 - 1000 7FFF FFFF FFFF FFFF was much more logical.
Of course this is very theoretical. The important thing is a 48 bit user program will work with any future 64 bit kernel, that is covered either way.
Is there any specific reason for canonical addresses that i have missed?
As you probably know AMD decided that only 48 bit addresses are supported. As there are 64 bits the other 16bits are forced to be the same as the 47th bit. So you end up with virtual addresses 0000 0000 0000 0000 - 0000 7FFF FFFF FFFF FFFF and FFFF 8000 0000 0000 0000 - FFFF FFFF FFFF FFFF . This leaves a big hole in the middle.
My question is why didn't they just simply say bits 48 - 62 must always be zero???? I would have thought virtual address space of 0000 0000 0000 0000 - 0000 7FFF FFFF FFFF FFFF and 1000 0000 0000 0000 - 1000 7FFF FFFF FFFF FFFF was much more logical.
Of course this is very theoretical. The important thing is a 48 bit user program will work with any future 64 bit kernel, that is covered either way.
Is there any specific reason for canonical addresses that i have missed?