If you have a 32-bit system with 4GB installed, you can reduce the amount of RAM that gets wasted and make some more of it available by opening the BIOS configuration and reducing the AGP aperture
setting to the minimum amount (e.g., 4MB).
Note: this may affect 3D graphics performance, so it is best for systems which don’t do 3D gaming or systems with video-cards that have a lot of video memory.
My motherboard literally burned out (one of the chips melted and there was smoke) in October 2010 and after a month of searching, I found an affordable used system, which for me was a big upgrade even though it was already old and obsolete at that point. It had 2GB of PC3200 RAM (1x1GB + 2x512MB). While this was double the RAM I previously had, this configuration mean that it would not run in dual-channel mode (not that my previous PC133 RAM could run dual-channel).
For two and half years, I searched for another 1GB stick so that I could have 3GB of RAM running in dual-channel mode (I also considered getting three 1GB sticks to have the maximum 4GB the 32-bit board could take while still running dual-channel).
Unfortunately, despite PC3200 (DDR1/400) being very old and obsolete (several generations old), it seems that lots of people are still using it because getting it for a reasonable price ($10/GB) was difficult. I had several leads and close calls, but never actually managed to physically get the sticks in my hands.
All of a sudden, in a single week, one guy contacted me with two 1GB sticks and I found another guy who had another one. Withing a a couple of days, I suddenly had the three 1GB sticks I was hoping for. As they say, when it rains, it pours!
After a bit of testing, I confirmed that the system was indeed running the maximum it could support in dual-channel mode. (I ran a quick memory-test and it came up clean; I’ll run a bigger, fuller one later on.)
I “maxed-out” my system by putting in four 1GB sticks. I knew that because it is 32-bit, I would be unable to use the full 4GB and would be limited to ~3.5GB~3.86GB. What I did not expect was that upon booting for the first time, the BIOS POST would report only 3199MB of RAM which amounts to only 3.12GB. Wait, what‽ Why so low? I knew some of it would be wasted, but 897MB‽ That was way more than I expected. That is almost as much as I had a couple of years ago and almost half of the “immense” amount I had last week. That’s not chump-change, 897MB is quite a bit of memory.
So what went wrong? Could it be a badly seated RAM stick? Well that’s certainly possible; having a memory module incorrectly inserted (some of the pins not making contact) could indeed cause it to show up as smaller than it should be (often as bizarre, unusual amounts like a 512MB stick reported as 473MB). I considered that and tried re-seating it, after cleaning the contacts, but it didn’t help. What else could it be?
Well the answer is the same as the reason that the full 4GB was unavailable in the first place: address-space and memory-mapping.
The reason that a 32-bit system cannot use the full 4GB that 32-bit can address is because devices are memory-mapped into the address-space, so each one deducts some.
In my case, what was happening was that in addition to my other add-on cards, my video-card happens to have 512MB of video-ram, which gets deducted from the address-space. Worse, I was still using the default AGP aperture of 64MB.
After some testing, I determined that the AGP aperture affects the available RAM. What’s more, it seems to affect it in a strange way as I have not yet determined an equation that relates how much system RAM is deducted for each AGP aperture setting. Regardless, I was able to recover some more of my RAM and by reducing the AGP aperture to the minimum setting (4MB), I was able to bump it up to 3300MB (3.22GB). It may only be 100MB more, but it’s better than nothing.