Virtual Address:
See Opteron Page Tables
From https://unix.stackexchange.com/questions/509607/how-a-64-bit-process-virtual-address-space-is-divided-in-linux:
========================================================================================
Start addr | Offset | End addr | Size | VM area description
========================================================================================
| | | |
0000000000000000 | 0 | 00007fffffffffff | 128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
| | | |
0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
| | | |
ffff800000000000 | -128 TB | ffffffffffffffff | 128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________
lower 48 bits actually used, "canonical" means top 16 bits must be copies of bit 47