Posts Windows Vista "supports" 4GB of memory. Sure it does...

Windows Vista "supports" 4GB of memory. Sure it does...

Grrrr... this one I didn't really see coming.  I figured, "Hey, I'm running Windows Vista Ultimate; which loves memory... I'll get more memory and it'll be happier."  So I ordered 4 1GB high performance RAM (which using the motherboard automatic detection settings yields a 5.6 Windows Experience Index) and replaced the 4 512MB sticks that were there.  After starting up Vista and looking in the Sidebar area in which I have a gadget that lets me know how much memory is being utilized... it said I only had 2813MB total.  What?!?!?!

Of course I rebooted the machine, went into the bios and turned on memory checking... man is it ever slow watching 4GB of memory being tested.  Anyway, sure enough, all was good from a motherboard/bios point of view.  Started Vista back up.  Still only 2813MB.  Launched CPU-ID and it saw I had 4 sticks totaling to 4GB.  Hmmmm... time to do some searching.

As it turns out, EM64T didn't mean what I thought it meant.  So spelled out, EM64T stands for Extended Memory 64 Technology.  I thought that it was just some mechanism that Intel came up with to handle 32-bit computing to access memory in the 64-bit range.  This technology was introduced back in the Pentium 4 HT processor days.  As it turns out, EM64T really means that the process is a 64-bit processor.  Great marketing guys... sheesh.  So here's the problem that I'm currently facing and the why I'm only being able to access 2.75GB of my 4GB of memory.

The 32-bit processors only allows for access about 4GB of total computer address space.  So in a 512MB-2GB computer, you would have full access to the memory and there'd still be another 2GB of address space to hold device locations.  Here is a little piece to the total 64-bit puzzle that no-one seems to be telling anyone about.  In that 4GB of address space, your video card memory is partitioned.  Meaning if you have a 256MB video card, 256MB is consumed in the 4GB of total addressable space that a 32-bit processor can utilize.  Here's the problem; what if you have a video card that has 512MB, 640MB, 768MB?  Yup, that will be mapped to the 4GB of addressable space.  So if you had a 768MB NVidia 8800 card and 4GB of RAM, you'd lose 768MB of that 4GB of memory immediately to the device making it non-accessible "memory" for the OS.  And it doesn't stop there, all of your other devices that need to be communicated with (you know, anything with a driver) consumes part of this address space.  So in my current 4GB worth of RAM system, 1.25GB worth of addressable space is consumed by devices.  And it gets worse.

Let's say you are one of those insane gamers (not that I've ever been accused of being such) and have bought into the whole SLi architecture.  You run out and pick yourself up two of the 768MB 8800 video cards... guess what?

You would lose another 768MB of memory.  Yes, this means that you would have a MAXIMUM limit of 2GB... EVER in the 32-bit world.  It doesn't matter if you bought more memory, it can't be used since your devices are consuming half of the maximum addressable space that a 32-bit process can access.  Which brings me to another point...


OK, technically it can support it... but what a line of crap.  Under no condition could I find could you really have 4GB of addressable memory in Windows Vista 32-bit.  No matter what, some of that memory (which appears to be at least 512MB) is mapped to devices.  Grrrrrrr.....

So I supposed I'll have to start looking at the possibility of moving to 64-bit sooner than I originally anticipated... ah the fun I expect to endure. ;-)

Wish me luck!

This post is licensed under CC BY 4.0 by the author.