Sunday, November 9, 2008

4GB RAM issue with 32 bit Operating Systems

I recently upgraded my old desktop and came across with this interesting issue. This would be useful for many of us since most of us are still using 32 bit operating systems. Just take this article as an early warning.

Upgrade configuration:
  • Intel Core 2 Duo 2.66GHz, 1066FSB, 3MB L2, E7300 (arround Rs. 14,000/=)
  • 2GB x 2 RAM (Dual Channel, 800MHz) (arround Rs. 3800/= x 2)
  • Intel DG31PR Motherboard (arround Rs. 7500/=)

This issue I had was having 4GB of memory. Well, I've reached the maximum addressable memory limit of 32 bit systems, right? So I should be able to use all 4GB as memory. But unfortunately, that was not the case. All I have is 3.2GB of memory on 32 bit Windows XP and 32 bit Ubuntu 8.10.



So where did my memory go?
Theoretically, the 32 bit systems are limited to 4GB of addressable memory. The problem is you can't allocate all those 4GB address space to RAM alone. Many other devices connected to the mother board (including the memory in video card) are mapped to the same 4GB address space. So there should be an address range dedicated to address those devices. So you are left with only 3.2GB of RAM address space.

According to what I've read from the internet, you have to use a 64 bit OS (I'm planning to put Vista 64 bit on my one) to utilize the full RAM address space. There's another facility called "Physical Address Extension (PAE)" provided by the motherboard to allow applications to address more than 4GB of memory on 32 bit systems. But I'm not clear about what it does and it seems to have it's own issues with device drivers.

Things to keep in mind
Maybe I have spent too much on RAM! Anyway having 3GB RAM this way is better than having 2GB and 1GB RAM sticks since dual channel gives you performance advantage. It won't be a problem at all if you are going to use a 64 bit OS (that's what I'm going to do). If that didn't work due to any reason I'll have to be stuck with a 32 bit OS and 3.2GB of RAM. Anyway that also should be enough for most current games.

more on this later...
..

Update
As Gayan has pointed out, 64 bit OS alone cannot support more than 4GB. The motherboard should have a feature called "Memory Remapping" to map device memory addresses above 4GB (see first comment). It appears my motherboard doesn't support that feature. So 3.2GB is more of a hardware limitation for me.

Update 2
I tried adding /PAE switch to XP 32 bit. It still showed me 3.2GB of RAM. Maybe in the background it's using all 4GB or whatever. Anyway, Vista 64 bit SP1 seems to have fixed the problem. It showed me 4GB RAM after I installed it. I hope this would be the end of my problem.


Update 3
This is how it is shown in Windows 7 RC 32bit. Avoids user confusion and easilly understandable.

..

11 comments:

GayanNR said...

Oh dude!
just stick to a 64bit OS
I'm currently on Vista64
having a 64bit OS is not enough for you to address your whole 4GB memory banks, Your chipset(in this case G31) must support "Memory remap feature " and shud be enabled.(Enabled by default in my Bios)
Does your Chipset support 8GB of Ram ? AFAIK it only supports 4GB but should have the Memory remapping feature in Bios.check it out, what memory remapping does is remapping the peripheral memory addresses above 4GB address space.
P.S: You shouldn't have gone with the G31 in the first place :(

Ravin said...

Thank you very much Gayan. You are right! My G31 only supports 4GB RAM and doesn't have that "Memory Remapping" feature you have mentioned.

I guess I've been caught on a marketing trick. Anyway, I'll try Vista 64 although I'll still be having less than 4GB.

Thanks again.

GayanNR said...

Well... u can do this as the last resort.
Tell barclays people that the mobo has troubles with 4GB of ram though it says it supports 4GB,and if u can afford ask for a better mobo (G33)by paying the additional price ( 1k-2k For Foxconn G33 mobo).
Usually the sales people are dumb a** holes and know nothing about those technical stuff,
Hope for the Best! Cheers

Thiwanka Manamendra said...

Hey,
That’s true. B'oz I’m using 3GB RAM and it working fine. But I think I’m not utilizing my dual channel since I'm using 1GB + 2GB. Anyway thank you very much Ravin for point out this issue..

Nilhan Uduwarage said...

Hey bro... there's a nasty trick to get around this. Just tell the damn kernal to use the 4GB.

Add /PAE switch in your boot.ini file. Bingo!

eg: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /PAE

Cheers!
Nilhan

Ravin said...

Thanks Nilhan, That's some useful info.

There were some places I read which mentions about driver compatibility issues with Physical Address Extension (PAE). Nevertheless it's always better to have an option.

GayanNR said...

Hey Thiwanka..
about your Dual channel issue... it may be in dual channel operation as newer chipsets support Different Size of memory sticks to be run in dual channel mode.. any doubts ? just download CPU-Z utility from www.cpuid.com (<1MB) and check the 4th tab whether is says Channels : Dual, if that's so its OK..
FYI : I recently updated my Rig with a 2GB RAM stick so now it is running with 2 of another 1GB sticks in Dual channel mode.. :-)
Channel A : 2x1GB
Channel B : 1x2GB

Thiwanka Manamendra said...

Ravin, Please check this image http://lh5.ggpht.com/_GyrmAU5vJwg/STBL5blX47I/AAAAAAAAABI/1JG10Ks44A8/32bit.jpg

Do you have any explanation for that ? I'm using Windows Server 2008 with 32bit with default settings.

Ravin said...

Interesting. Maybe Server Edition is pre-configured to overcome that 32bit issue with PAE/Memory remapping or something.

James Bond 007 said...

The G31 chipset will only support a maximum of 4GB RAM, and some of that RAM will not be usable since the required memory addresses are taken by some of the hardware in the computer.

So I will bet that although Vista64 reports 4GB RAM, you won't be able to make use of all of them. (Check the Task Manager to make sure.)

As for the Server edition being able to make use of 4GB RAM or above, yes, for some versions it is true. Specifically, the 32 bit versions of Windows Server 2003 R2 Enterprise Edition and Windows Server 2008 Enterprise Edition will be able to support up to 64GB RAM. (Assuming of course the chipset in your computer has the relevant memory support. The Intel P35 supports 8GB RAM, while the newer P43/P45 supports 16GB RAM.)

Ravin said...

@James Bond 007
Thanks very much for your valuable info. Task Manager also shows Total Physical Memory as 4091.

I guess the best way to test is by making the actual memory usage reach 4GB. But still I haven't come to a point where I needed more than 3GB in my everyday usage. I guess time will tell...

Google