32 bits should permit 4G RAM, but it’s unlikely
Do you remember the early days of the IBM PC and the 640k RAM limit? In theory you could have a whole megabyte of memory on such a PC, but because much of the address space was remapped to hardware devices, 640k was your limit. You could do some trickery of your own to move your inaccessible memory to a higher address space, but that brought problems of its own.
We moved to 32 bit addressing and those problems went away.
Guess what. They’re back.
In theory, with 32 bits in your address bus you can access 4,294,967,296 different memory locations. That’s 4Gb in common parlance. Some processors even have an additional 4 address bits, giving 64Gb. But despite the possibility of using alternate buses to address hardware devices (e.g. the graphics card), it is still the norm to map these onto the memory address space.
Microsoft’s knowledge-base article KB929605 gives some of the background.
Sadly, the problem might not even be resolved by using a 64bit operating system with your 64bit processor, as the BIOS and chipset have to support it too.
Trying to force the “hidden” memory to be available might not work either. You can force it through shadowing, where a part of the existing visible space is used to copy data to/from the invisible space) but this can run into limits in the size of the shadow, plus a performance impact. You can try moving (remapping) the invisible region into a space above the normal address range. For example, move an invisible 1Gb region, that current goes from the addresses between 3Gb and 4Gb, into a new region between 4Gb and 5Gb. Sounds good, execept that many device drivers can’t deal with this kind of remapping, and you could end up with a dud machine.
My 4Gb machine reports just over 3Gb of physical RAM, allowing for PCI maps and the near 800Mb on the graphics card, this seems about right. Whether I can reclaim the hidden memory by moving to Vista64 is unclear, but given that much of my existing s/w is incompatible with Vista64, I’ll be staying with 32 bits for quite some time. It’s so much like the good old days…
Categorised as: Uncategorized