All we need is an easy explanation of the problem, so here it is.
Firstly let me say I’ve seen a number of similar questions on SuperUser, and I don’t think this is a duplicate. (Most address 4GB RAM installed. I have 6GB)
I have Windows XP 32-bit running on a i7-based Xeon system with 6GB of RAM. I only see 3.5GB of RAM in Windows.
Is there any way to squeeze more visible RAM out of this set up? Even an extra 1GB would be great.
Does having 6GB (vs 4GB) of RAM installed help at all? (I.e Even if I loose the 3.5-4.0 GB region, can I use the area above it?)
P.S. Will eventually move to Windows 7 64-bit, but can’t for now.
How to solve :
I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.
Even with Physical Address Extensions enabled Windows XP still allows only 4 GB of memory. I know this can be a little confusing since Windows Server 2003 allows up to 64 GB of RAM (with the proper processor support). Sadly your OS is bounded to 4 GB in this case. The kernel may support up to 64 GB with PAE, but it is locked down in XP. It seems the only reason they still include it is for DEP support. From Physical Address Extension – PAE Memory and Windows:
Although support for PAE memory is typically associated with support for more than 4 GB of RAM, PAE can be enabled on Windows XP SP2, Windows Server 2003, and later 32-bit versions of Windows to support hardware enforced Data Execution Prevention (DEP).
EDIT: I just want to add that this 4GB cap includes dedicated video memory or memory set aside for a on board GPU.
No. You won’t see more than 3.5GB until you upgrade to a 64 bit operating system. If you need to use all 6GB now, you will need to get that “eventual” Win7 64 bit install now.
As near as I can understand:
32-bit processors natively have 4GB (2^32 [bit] ) of address space — Period. Because of MMIO (Memory-Mapped Input/Output) a portion of this space is also used to communicate with, and address the memory of, your peripheral devices (ie gfx cards).
In order to support multiple memory intensive applications and to compensate 8GB+ mainboard support, Intel (and later, AMD) introduced PAE (Physical Address Extension) to increase the addressing space to 48 bits (and later 52 bits), respectively.
This is accomplished by sending memory addresses in 2+ “chunks” (Dual-Cycle Addressing) — the first 32 bits on 1 cycle, and the remaining bits on consecutive cycles thereafter.
However, for this new framework to be utilized, hardware manufacturers had to integrate support for DCA (aka DAC) into their respective products, typically requiring extensive hardware revision and special PAE enabled drivers.
Software also had to be rewritten to support Large Address Awareness, allowing more than the default 2GB of application memory space. Needless to say, because of the amount of software and hardware revision involved, and with the advent of 64-bit processors soon afterward, the technology (while popular in server and enterprise environments) never significantly penetrated the end-user market.
PAE (outside of DEP) was disabled by SP1 or SP2. MS won’t support it because so many applications can’t handle it. It was left on for its server OS products because enterprise apps are generally written better and because 32-bit servers could use the ram.
PAE is pretty much useless outside of the server OS’s. Even then its of marginal utility. At most each process can only address a total of 4GB anyway.
You can enable a third-party RAMdrive and put a swap file on it. Effectively your applications will see all your memory, but there could be a performance overhead. Still, it is much faster than a swap file on a hard disk.
The original releases of Windows XP and Windows XP SP1 used PAE mode to allow RAM to extend beyond the 4 GB address limit. However, it led to compatibility problems with 3rd party drivers which led Microsoft to remove this capability in Windows XP Service Pack 2. Windows XP SP2 and later, by default, on processors with the no-execute (NX) or execute-disable (XD) feature, runs in PAE mode in order to allow NX. The no execute (NX, or XD for execution disable) bit resides in bit 63 of the page table entry and, without PAE, page table entries on 32-bit systems have only 32 bits; therefore PAE mode is required in order to exploit the NX feature. However, “client” versions of 32-bit Windows (Windows XP SP2 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility  via the licensing limitation mechanism, even though these versions do run in PAE mode if NX support is enabled.
So based on this it would seem that if you have pre-SP2 XP you could get more than 4GB memory.
Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂