Sunday, January 6

Where's My 4GB RAM?!

Through various forum entries, I have stumbled across many people who have complaints about 1GB or so RAM "missing" when they install 4GB onto their motherboard. In this post, I will try my best to address this baffling problem.

In fact, all 4GB of RAM installed are actually present. However, the "disappearance" of the 1GB (give or take) is due to a design decision by IBM years ago, in the days of the classic DOS. In those days, the maximum amount of RAM (due to address space) that can be utilized was a measly 1MB for a 16bit system. However, it was nearly impossible to install past 640KB of RAM on systems then. This lead to a maximum of 640KB system memory and a 1MB address limit. Because of this, a
memory mapped input/output process (MMIO) was established to allocate the in-built memory on other hardware, such as video adapters, to the address space between 640KB and 1024KB. This may not seem as useful as one may think, as the 640KB-1MB space was used solely as an input/ output dumping ground.

So why has this been passed down the ages? This is for the reason of backward compatibility, as it enables current computers to install DOS. This may prove to be a stubborn obstacle for users wanting to install 4GB of RAM on current 32bit systems. Theoretically, the maximum amount of RAM (due to address space also) that a 32bit system can accommodate is 4GB. Any excess memory, including those from video cards and such, will take up
address space and result in the lack of space to address all 4GB of RAM. For example, a video card with 256MB of on-board memory will take up address space and thus waste 256MB of physical memory if 4GB of RAM is present. This value doubles for those who would want to run 2 graphic cards in parallel. So since a 32bit system has a 4GB RAM limit, the system will want to make all your components and RAM correspond to the boundary. If more address space was assigned to the system RAM (to see more of it), the other devices will have a lack of space and will not work. Therefore, the system chooses the lesser of two problems and gives less RAM.

To get around this, users who really want 4GB or more RAM can opt to utilize Physical Address Extension (PAE) or install a 64bit operating system. Then again, this will arise several setbacks, of which are mainly compatibility issues with 64bit and 32bit drivers.

Thus, I recommend that ordinary users stick to a 32bit system, and install no more than 3GB of RAM if you want to maximize what you paid for. There may still be a small amount of RAM shadowed by MMIO too, but the value should be negligible. For those who had already bought 4GB of RAM, I am sorry, as you will never be able to see all 4GB of RAM unless you go with 64bit drivers.

For more detailed information (mine may not be 100% accurate), read more on this here and here.

Hope it helps
T'ang

No comments: