Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changes between Version 6 and Version 7 of VASFeatures


Ignore:
Timestamp:
2011-10-22T10:06:09Z (8 years ago)
Author:
Jakub Jermář
Comment:

Improve the table by separating HW limitations and use in HelenOS

Legend:

Unmodified
Added
Removed
Modified
  • VASFeatures

    v6 v7  
    11= Virtual address spaces per architecture =
    22
    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 
     3Below 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.
    54
    65----
     
    87== amd64 ==
    98
    10 48-bit VAS
     948-bit virtual address width
    1110
    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 ||
    1515
    16161. depends on implementation, but in practice current implementations use 48 bits
    17 
     172. physical addresses beyond the limit of physical memory are mapped non-identity
    1818
    1919----
     
    3030== ia32 ==
    3131
    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 ||
    3435
     361. physical addresses beyond the limit of physical memory are mapped non-identity
    3537
    3638----
     
    4446== mips32 ==
    4547
    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 ||
    5154
    52   1. maps to physical 0, uncached, bypasses TLB
    53   2. maps to physical 0, cacheable, bypasses TLB
     551. maps to physical 0, uncached, bypasses TLB
     562. maps to physical 0, cacheable, bypasses TLB
    5457
    5558
     
    6669=== UltraSPARC I, II, IIi ===
    6770
    68 44-bit VAS
     7144-bit virtual address width
    6972
    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     ||
    7377
    74 1. no code within 4GiB reach of the VA hole on UltraSPARC I and II
    7578
    7679=== UltraSPARC III, IIIi, IV and IV+ ===
    7780
    78 64-bit VAS
     8164-bit virtual address width
    7982
    80 || 0x0000000000000000 || 16EiB || kernel non-identity ||
     83|| '''Starting address''' || '''Size'''    || '''HW limitation''' || '''HelenOS use'''   ||
     84|| `0000000000000000`     || 16 EiB        || kernel (1)          || kernel identity     ||
    8185
    8286
    8387=== UltraSPARC T1, T2 ===
    8488
    85 48-bit VAS
     8948-bit virtual address width
    8690
    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     ||
    9095
    91   1. no code within 4GiB reach of the VA hole on T1
    92   2. no code within 8KiB below VA hole on T2
     961. both kernel and uspace run in separated 64-bit address spaces
     972. no code within 4GiB reach of the VA hole on UltraSPARC I and II
     983. no code within 4GiB reach of the VA hole on T1
     994. no code within 8KiB below VA hole on T2