Changes between Version 6 and Version 7 of VASFeatures
- Timestamp:
- 2011-10-22T10:06:09Z (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
VASFeatures
v6 v7 1 1 = Virtual address spaces per architecture = 2 2 3 Below are the various situations as dictated by the design of each supported architecture. The identity / non-identity here correspond to hardware limitations rather than to how HelenOS currently operates. 4 3 Below are the various situations as dictated by hardware of each supported architecture and as currently used by HelenOS. The address space split is described from the kernel's point of view. 5 4 6 5 ---- … … 8 7 == amd64 == 9 8 10 48-bit VAS9 48-bit virtual address width 11 10 12 || 0xffff800000000000 || 128TiB || kernel non-identity || 13 || 0x0000800000000000 || 16776960TiB || VA hole || (1) || 14 || 0x0000000000000000 || 128TiB || uspace non-identity || 11 || '''Starting address''' || '''Size''' || '''HW limitation''' || '''HelenOS use''' || 12 || `FFFF800000000000` || 128 TiB || none || kernel identity (2) || 13 || `0000800000000000` || 16776960 TiB || VA hole (1) || || 14 || `0000000000000000` || 128 TiB || none || uspace non-identity || 15 15 16 16 1. depends on implementation, but in practice current implementations use 48 bits 17 17 2. physical addresses beyond the limit of physical memory are mapped non-identity 18 18 19 19 ---- … … 30 30 == ia32 == 31 31 32 || 0x80000000 || 2GiB|| kernel non-identity || 33 || 0x00000000 || 2GiB|| uspace non-identity || 32 || '''Starting address''' || '''Size''' || '''HW limitation''' || '''HelenOS use''' || 33 || `80000000` || 2 GiB || none || kernel identity (1) || 34 || `00000000` || 2 GiB || none || uspace non-identity || 34 35 36 1. physical addresses beyond the limit of physical memory are mapped non-identity 35 37 36 38 ---- … … 44 46 == mips32 == 45 47 46 || 0xe0000000 || 512MiB || kernel non-identity || kseg3 || 47 || 0xc0000000 || 512MiB || kernel non-identity || ksseg || 48 || 0xa0000000 || 512MiB || spec || kseg1 || (1) || 49 || 0x80000000 || 512MiB|| kernel identity || kseg0 || (2) || 50 || 0x00000000 || 2GiB|| uspace non-identity || kuseg || 48 || '''Starting address''' || '''Size''' || '''HW limitation''' || '''HelenOS use''' || 49 || `E0000000` || 512 MiB || kseg3, kernel || kernel identity || 50 || `C0000000` || 512 MiB || ksseg, kernel || kernel identity || 51 || `A0000000` || 512 MiB || kseg1, kernel uncached (1) || unused || 52 || `80000000` || 512 MiB || kseg0, kernel identity (2) || kernel identity || 53 || `00000000` || 2 GiB || kuseg, uspace || uspace non-identity || 51 54 52 53 55 1. maps to physical 0, uncached, bypasses TLB 56 2. maps to physical 0, cacheable, bypasses TLB 54 57 55 58 … … 66 69 === UltraSPARC I, II, IIi === 67 70 68 44-bit VAS71 44-bit virtual address width 69 72 70 || 0xfffff80000000000 || 8TiB || kernel non-identity || 71 || 0x0000080000000000 || 16777200TiB || VA hole || (1) || 72 || 0x0000000000000000 || 8TiB || kernel non-identity || 73 || '''Starting address''' || '''Size''' || '''HW limitation''' || '''HelenOS use''' || 74 || `FFFFF80000000000` || 8 TiB || kernel (1) || kernel identity || 75 || `0000080000000000` || 16777200 TiB || VA hole (2) || || 76 || `0000000000000000` || 8 TiB || kernel (1) || kernel identity || 73 77 74 1. no code within 4GiB reach of the VA hole on UltraSPARC I and II75 78 76 79 === UltraSPARC III, IIIi, IV and IV+ === 77 80 78 64-bit VAS81 64-bit virtual address width 79 82 80 || 0x0000000000000000 || 16EiB || kernel non-identity || 83 || '''Starting address''' || '''Size''' || '''HW limitation''' || '''HelenOS use''' || 84 || `0000000000000000` || 16 EiB || kernel (1) || kernel identity || 81 85 82 86 83 87 === UltraSPARC T1, T2 === 84 88 85 48-bit VAS89 48-bit virtual address width 86 90 87 || 0xffff800000000000 || 128TiB || kernel non-identity || 88 || 0x0000800000000000 || 16776960TiB || VA hole || (1), (2) || 89 || 0x0000000000000000 || 128TiB || kernel non-identity || 91 || '''Starting address''' || '''Size''' || '''HW limitation''' || '''HelenOS use''' || 92 || `FFFF800000000000` || 128 TiB || kernel (1) || kernel identity || 93 || `0000800000000000` || 16776960 TiB || VA hole (3), (4) || || 94 || `0000000000000000` || 128 TiB || kernel (1) || kernel identity || 90 95 91 1. no code within 4GiB reach of the VA hole on T1 92 2. no code within 8KiB below VA hole on T2 96 1. both kernel and uspace run in separated 64-bit address spaces 97 2. no code within 4GiB reach of the VA hole on UltraSPARC I and II 98 3. no code within 4GiB reach of the VA hole on T1 99 4. no code within 8KiB below VA hole on T2