18 December 2020

Windows XP on the limit

 What is the maximum processor XP support?

XP support up to 2-way SMP (2 sockets), with a maximum 32 logical processor cores in total or with HT/SMT disabled up to 32 physical processor cores. XP can fully utilise SSE processor such as Intel Westmere or AMD K10 and will/may run under newer processor but wont be able to use AVX/FMA.


What is the maximum memory XP support?

Since 1995 32-bit i686 Pentium Pro 150Mhz has 36-bit PAE to access up to 64GB, in 1998 Intel provide PSE-36 driver (similar to Gavotte Ramdisk) for Windows NT 4.0 to access upper memory as pagefile. Windows 2000 has PAE built-in, original XP/2003 support 37-bit PAE (a maximum of 128GB physical memory in accordance to 32-bit Xeon processor spec at the time) and fully enabled in Server 2003 datacenter at the cost of "bad" bundled driver removal, but then "revised" to 64GB because 32-bit Server 2008 can't do 128GB, meanwhile XP SP2 restricted to 4GB with all bundled driver preserved. These limits are artificial switch based on marketing or to reflect testing result. However within 128GB only up to 16GB can be normally used, the rest addresses need AWE. Regardless each 32-bit process still limited to a maximum 4GB address space or from user perspective it is more like 2GB maximum. x86_64 CPU PAE has been varied depends on timeline and target market such 39, 40, 46, 48, and 52-bit. Fully 37-bit PAE need 980MB (for address translation) within system VAS (1024-2048MB), in this case if /3GB (4GT) or /USERVA=3072 is set then nothing is left for system, so Windows limit PAE to 16GB furthermore /3GB may negate addressable memory by AWE.

At processes level additional memory tricks available for user VAS such PE large address aware flag (in conjunction with /3GB) and AWE which is similar to PAE at user VAS level. The PE's IMAGE_FILE_LARGE_ADDRESS_AWARE flag may allow a user process to use up to 3GB, an AWE capable program can claim chunks (each less than USERVA value, up to <128GB in total) of PAE memory and get each needed chunk swapped in and out within its USERVA range (2048-3072MB). Example of AWE program is 32-bit MS SQL server, Oracle DB and MySQL 4.1-5.0 the latter capable of up to 64GB AWE memory. Another technique to overcome user VAS limit is to have multiple child processes such in Chrome browser and ABBY OCR or employ multithreaded batch processing such in ppx2, "make", etc.

Pagefile, a virtual memory that reside in storage device can be specified as 16 4GB pagefiles or 64GB in total, overall 192GB of maximum combined memory in XP. Imdisk can use AWE to create virtual disk that in turn can host all possible pagefiles and/or as mountpoint/target for %TEMP%. Just because a system has a lot of RAM (>4GB) that doesn't mean pagefile can be turned off, in fact there can only be one usable <=2GB system VAS at any time which instanced together with user VAS in every 32-bit process, thus system resource could be depleted if it cut by huge PAE mapping. Pagefile will allow system to expand some cache and pool out of the confined system VAS which at worst is about <1GB in >4GB system with /3GB. This is contrast with 64-bit Windows situation at the scale of TB VAs which more than current average size of installed system memory.

32-bit processor which has 32-bit instruction is not necessarily also has 32-bit addressing (i386-i586) it can be more such as i686 or maybe less like some i286 variant including all current x86_64 processors. Memory limit has been a moot point when talking about 32-bit OS like XP, but workaround those limitations is what make it fun.


What is the maximum disk storage XP support?

While NTFS 3.1 can go up to 256TB, other limiters make a 256TB disk impossible. XP only support MBR disk which maxed at 2TB for 512b sector or 16TB for 4k sector which need proper 4Kn controller. Dynamic disk (stripe/span mode) support up to 32 512b sector MBR disk of total 64TB agregated disk storage. Note that BIOS/NTLDR do not support booting 4Kn disk neither GPT disk (accessible through third party driver such Paragon GPT). NTFS however allow mountpoint other NTFS volume as directory to combine space though it wont change the root volume size. The fastest non-raid disk on XP is SSD either through ahci m.2 pcie 3.0 such as Samsung SM951 or through dual port SAS12G such as Seagate Nytro, both up to 2.2GB/s transfer rate.


What is the maximum XP desktop/display can be?

XP desktop is a virtual screen at 32000*32000 size with maximum exposeable area of 128 Megapixel which make it somewhat "bigger" but also smaller than GPU limit of 16k*16k. A monitor is an inset that panning over that area. The 32K limit may come from DIB format limit which is signed 2^16 integer, not sure what 128 Megapixel limit is all about as such area at 32-bit color would "only" need half GB memory however many 32-bit image viewer known to have problem displaying >100MP image, Windows Picture and Fax viewer for example could display (full size) up to 131MP. There is little freeware called sdesk that allow you to "stroll" over entire virtual screen without extra monitors.

XP can manage/arrange up to 10 monitors some say 10 is also the limit of display adapter numbers (dual-GPU card is counted as 2). Because of this dual-head display driver often capable of abstract larger monitor by pre-joining (span mode) the two before reporting to Windows thus counted as one. XP allowed different vendor driver to coexist thus enabling non-accelerated "non-sync'ed" mosaic setup of heterogenous GPUs and monitors. VGA, DVI-DL (7.92Gb/s), HDMI1.4 (8.16Gb/s) and DisplayPort1.1 (8.64Gb/s) are supported in XP, with all digital ones should be capable of 32-bit color UHD @30hz (4*3840*2160*30) or 4k @24Hz or 2560x1600 @60hz.


What latest hardware technology that XP support?

(This info compiled from driver files and not necessarily tested)

10Gbps Ethernet: Intel 82598, x520, x540; Qlogic 8140/2, 8150/2; Emulex OneConnect 1010x, 1110x; Mellanox ConnectX I (all pcie 2.0)

10Gbps SATAe: ASMedia 106se

10Gbps USB3: ASMedia 1142-3142

12G SAS3: Areca 1226, 1883 (support 4Kn)

OpenGL 4.x, OpenCL 1.x: Intel HD/Iris Gen3-Gen4 (no OpenCL driver); AMD Terascale 2 - GCN 2 (Bonaire); Nvidia Fermi - Maxwell

Wifi 802.11ac, Bluetooth 4.2: Broadcom 43xx; Realtek 88xx