The first thing to understand is that modern computer systems use virtual memory. You can have 32-bit virtual addresses for applications while having larger than 32-bit physical addresses.
The second thing to understand is that physical address space is used for various things, most significantly main ram and memory mapped perhipherals. Graphics cards in particular often have large memory mapped regions. The result is if you only have 4GB of usable physical address space you can end up with significantly less than 4GB of usable ram. Approximately 3.5 GB usable is typical but I have seen systems where it was as low as 2.5 GB.
On a PC to support more than 4GB of physical address space a mechanism called PAE is used. For this to work several things are needed.
- The CPU must support it.
- The chipset must support it.
- The BIOS must support it.
- The OS must support it.
CPUs have supported PAE for ages, that is not an issue.
Many older chipsets were limited to 4GB of physical address space. IIRC Intel Laptop chipsets got support for more than 4GB of address space with the "Santa Rosa" generation in 2007. I'm not sure about desktop chipsets but I expect it was around the same time. Workstation/server chipsets obviously got support much earlier.
Afaict BIOSes mostly support it if the chip set does. Wouldn't surprise me if there are some exceptions though.
OS is a thorny one. Linux and windows have both supported PAE for ages. Unfortunately since windows XP service pack 2 MS has artificially limited the physical address space to 4GB. They claim they did this because of buggy drivers, cynics would suspect they did it to force people to buy server editions.
In windows XP this is baked in to the kernel and basically can't be undone. However on later versions it can be bypassed with some minor hacks to the kernel. See https://wj32.org/wp/ for details.
Check out this alternative way of phrasing the same question: http://superuser.com/questions/7964/where-did-the-other-8-gb-of-ram-go
– therefromhere – 2009-07-27T13:22:54.553Thanks, here's a good answer too, I may just have to close this question. http://serverfault.com/questions/3342/how-does-a-32-bit-machine-support-more-than-4gb-of-ram
– Peter Turner – 2009-07-27T13:26:57.637