Wed 9 Apr 2008
Memory is getting cheaper every day. This is one reason why more and more people are equipping their PCs with 4GB RAM or more. Modern desktops often support up to 8GB. So it happens quite often these days that a proud owner of a new a PC wonders why Vista only reports about 3GB RAM even though he bought 4GB. I have been asked this question by several people within the last weeks. Some of them were IT pros, so I thought I should post something about it here. The things I say in this post mostly apply to Windows XP as well.
In theory, a 32-bit operating system should be able to support 232 bytes = 4GB memory. Thus the first reaction usually is that the memory chips or with the mainboard has a hardware defect. Unfortunately, that’s not the case. Vista can indeed address 4GB of memory. However, the maximum amount of RAM that can be used by the system and applications is 3.12 GB.
The cause for this is the so-called memory-mapped I/O (MMIO). Some devices need a dedicated space in memory. A typical example is a video card that utilizes the system memory. Now, you might object that your video card has its own memory and you didn’t install any additional devices that could occupy so much RAM.
Well, for compatibility reasons Vista reserves memory for devices even if they don’t exist in your computer. That means that if you have 4GB RAM in your computer and Vista displays only 3.12 GB available memory, about 1GB is indeed not used by the OS. You might as well remove it. That is quite strange, isn’t it? I am not a system programmer, but for me that seems to be a design error, probably one that is very old.
There is a KB article about this issue which offers a “workaround” though. All you have to do is to install Vista x64 instead of Vista x86. Vista’s 64-bit edition is indeed capable of handling more memory. Note that it is not possible to upgrade Vista x86 to Vista x64. That’s why I find it somehow funny that they sell this solution as a workaround. I will post some articles about the Vista x86 vs. Vista x64 issue very soon. So if you think of going this route, you might as well wait some more days before you make up your mind. In the meantime you can read a former article about the Vista x86 vs. Vista x64 issue.
![]()
You might think that Microsoft found an even better workaround, though. It is Service Pack 1. I have read about this before, but today I tried it myself. I installed Vista on a brand new HP PC with 4GB RAM. As expected Vista’s System Properties only displayed about 3 GB RAM. After I installed SP1, the amount of RAM was increased as if by a miracle (see screenshots) to 4GB. You might think that Microsoft corrected this design error, but unfortunately that is not the case.
All they did is to change what is displayed in the System Properties. I guess this problem kept the support personal of PC vendors around the globe busy. And since RAM is getting cheaper every day, the situation would have become worse soon. So Microsoft decided to solve this issue the easy way. System Properties and also the Welcome Center, which is the first place you go to check the amount of memory, simply displays 4GB and so everyone is happy now.
The only problem is that those who are unaware of Vista’s 3.12 GB limit just wasted their money. If you really want to know how much memory Vista actually uses, you have to use Vista’s System Information tool. To do so, go to Vista’s Start prompt and type Msinfo32. The new System Information tool in Vista SP1 distinguishes between “Installed Physical Memory (RAM)” and “Total Physical Memory”. The latter one is the amount of memory you can really use, and the first one indicates how much money you just have wasted if you put 4GB in your PC. You can read more about this issue in this KB article.


Newsletter: 


Being able to use the full 4GB (or more) of installed physical memory is not just a function of the operating system. Many people think that if you install a 64 bit operating system you will solve the problem, as a 64 bit OS is able to address more than 4GB of memory.
The chipset used for the motherboard is very important. For example, the Intel 945 chipset supports 4GB of addressable memory, while the Intel 965 supports 8GB of addressable memory. The same holds true about the OS (some people say BIOS) using some of that upper range of that addressable memory for I/O devices.
Some 32 bit Operating Systems (like Windows Server 2003) are able to use more than 4GB of memory through the use of the /PAE switch in the boot.ini file. However, there’s a catch for this also. From what I’ve read, the CPU has to support that switch.
I have known about the limitations just not the reason for it. I unfortunately have a toshiba satellite that is only capable of handling 2gb of RAM so i have not had to worry about it. My mobo is what is limiting me to 2 instead of 3. I know with 64bit you can have more than 8gb RAM and i will wait for your next related article before rushing to the online outlet and buying my new pooter. good stuff Microsoft is into instant gratification.
This issue and the /pae resolution (drivers permiting) goes way back to Windows 2000…
I ask people: “What do you want more than 2G for?” and the majority cannot answer.
“3G max, NEED more? go x64.” Is my standard reply, PAE can introduce problems (so I’ve read) with some applications and drivers, and I get paid for “stable”.
Windows Task Manager (Ctrl-Shift-Esc) can report how much memory Vista actually uses in Performance tab.
[...] Why Windows Vista only sees 3GB memory in a PC with 4GB RAM and how Vista SP1 fools its users Memory is getting cheaper every day. This is one reason why more and more people are equipping their PCs with 4GB RAM or more. Modern desktops often support up to 8GB. So it happens quite often these days that a proud owner of a new a PC wonders why Vista only reports about 3GB RAM even though he bought 4GB. I have been asked this question by several people within the last weeks. Some of them were IT pros, so I thought I should post something about it here. The things I say in this post mostly [...]
Please read this for an actual, proper explanation of the 3GB limit with all 32-bit operating systems:
http://makfu.wordpress.com/2007/08/09/okay-one-more-time/
This article will shed more light on the 32bit memory limitations: http://makfu.wordpress.com/2007/08/09/okay-one-more-time/
Here’s a better explanation - with graphics.
http://www.codinghorror.com/blog/archives/000811.html
[...] tema, el SP1 de Vista. Según el autor del post original, lo ha probado con SP1 y milagrosamente aparece 4Gb, pues nada, problema resuelto, solucionado con [...]
[...] Article librement traduit et modifié de 4sysops.com [...]
When I (among others) commented with a link to more thorough explanations of how BIOS memory mapping causes this issue, it was in the hope that you might correct the article. Using phrases like “Vista’s 3.12 GB limit” will lead many to mistakenly beleive the OS is responsible for that ‘lost’ memory, when in fact the OS never even *saw* that memory - it was taken by the BIOS/chipset before the OS ever started loading.
Please, consider changing phrasing or adding a correction to this article.
Vii, you are certainly right. The BIOS has to support 4GB as well. Unfortunately, it is often not enough. Some boards are a bit choosy about the RAM modules they accept. This applies especially to computers of well-known brands. They want to sell their own memory. It is typical for Fujitsu-Siemens computers, for example. As to PAE, the problem is not only the CPU. You might also run into driver problems.
Ronald, congrats to your Toshiba Satellite. I have one too.
I am an absolute Toshiba fan when it comes to laptops. I just publish the first article about Vista x64 vs. Vista x86 question.
Leonardo, the main reason why I need more than 2GB is virtualization. I use VMware Workstation as others use Word. That is, I launch it every day on my desktop. Believe me, you can’t have enough RAM for that.
Merom, you’re right, Task Manager is the fastest way to check the amount of RAM.
Kevin, thanks for the link. Good article. By the way, there are 32-bit operating systems that support more than 3GB RAM. So your comment was not 100% “proper”.
Naphtali, thanks too. Is Kevin your twin? You posted the same link exactly at the same time.
Bryan, I do not think that my explanation is not correct and I do think that Vista is responsible for the 3.12GB limit. There are 32-bit operating systems that can utilize the full 4GB, so there are ways to solve this problem. This might have cause compatibility problems. Nevertheless, it is a weakness of Vista x84 to support only 3GB RAM.
It’s not correct. I’ve seen Vista32 (pre SP1) do 3.4, 3.5 gb on some 32bit mobos. You can see a screenshot of Vista reporting 3454MB at the codinghorror link I gave earlier. And I have Linux systems ’seeing’ only 3.3GB in a 4GB system. Different chipset/BIOS will reserve different amounts of RAM, explaining why you got 3.12 but Atwood got 3.452.
If you can’t trust me (which I do not mind, I am a stranger after all), trust Intel:
http://www.intel.com/support/motherboards/server/sb/cs-010458.htm
“These requirements may reduce the addressable memory space available to and reported by the Operating System. These memory ranges, while unavailable to the OS, are still being utilized by subsystems such as I/O, PCI Express and Integrated Graphics and are critical to the proper functioning of the PC.”
Or here: ftp://download.intel.com/support/motherboards/server/sb/ta71902.pdf
Substantially the same quote, but this time with the graphic Atwood used, and a note that this issue isn’t Intel-only; non-Intel chipsets do this too, because it is a PC standard. Dating back all the way to the first x86 motherboards in fact - remember the old DOS HIMEM tricks we had to play?
Even MS documents this in the same KB929605 article that you linked:
“When the physical RAM that is installed on a computer equals the address space that is supported by the chipset, the total system memory that is available to the operating system is always less than the physical RAM that is installed. For example, consider a computer that has an Intel 975X chipset that supports 8 GB of address space. If you install 8 GB of RAM, the system memory that is available to the operating system will be reduced by the PCI configuration requirements. In this scenario, PCI configuration requirements reduce the memory that is available to the operating system by an amount that is between approximately 200 MB and approximately 1 GB. The reduction depends on the configuration.”
Sun documents this as well: http://ch.sun.com/sunnews/newsletter/bulletin/2005/bulletin6.html
If you Google “linux 32bit 4GB” you will find many examples of the same situation in that OS. No doubt, same goes for BSD, Apple, etc.
If your BIOS has a setting for ‘memory hole’ you might try setting that to zero, and rebooting Vista, to see the change. Also, setting AGP aperture to a smaller value can return some memory to the OS.
So, I repeat - Vista would give you 4GB. If the motherboard would give it to Vista, that is!
Bryan, I am quite aware of the fact that this is a BIOS-related problem. However, the KB article, I linked to Microsoft says: “The reduction in available system memory depends on the devices that are installed in the computer. However, to avoid potential driver compatibility issues, the 32-bit versions of Windows Vista limit the total available memory to 3.12 GB.”
Well, Microsoft should know about the limits of Vista, right? I don’t know if screenshots prove anything. How do you know that Vista displays the amount of memory correctly it actually uses?
So again, I don’t know what to change in my article.
Well I have Vista x64 with 4GB of ram and the OS says 4GB, the motherboard says 4GB, but in reality total physical memory is 3.25GB.
I have been searching for a fix to this issue for ages and i thought SP1 had addressed it until i read this artical and checked.
1. I pretty p*&^$#$#%6 at microsoft right now as that a pretty low down dirty trick.
2. To chip in to the argument, its probably the MOBO reserving the memory for some 32bit device in my system.
However (any assistance would be greatly appreciated)
I have all less than 6 months old [Dual core - WD sata2 HDD - ATI2600pro - Kingston memory 667 - Samsung DVDRW Sata - P35 ICH9 mobo] none of these should be 32bit devices!
Flicking throught the system info, there is a floppy controller active on IRQ 6 DMA channel 2, which doesnt make any sense to me as I have no floppy installed.
The whole point being x64 still doesnt mean 4GB ram, as there are still deeper underlying issues.
I think that we are facing two issues here.
First, that article which says Vista is limited to 3.12 is probably wrong. I submitted feedback to that article asking them to be more explicit, because as I say, I have seen it showing more than 3.12 (by the exact same methods the article says to use, one of which brngs up the dialog Atwood screenshotted). Me and Atwood are not the only ones; lots of people have documented it showing numbers higher than 3.12.
Second, your article makes it seem like this is a Vista-only problem. In comments you say other OS’s do not have the problem - but they do, as I demonstrated. Can you name which exact OS that really does get 4GB on one of the motherboards which reserve memory in BIOS and never show it to the OS?
Bryan, let me know if Microsoft changes this KB article. If they do, I will certainly change mine, too.
An OS which can use the full 4GB is Windows Server 2003 Enterprise, for example. The trick is called memory remapping. A good explanation of how it works can be found here.
And this article discusses memory remapping with regards to different Windows systems.
I have never claimed that it is a Vista-only issue. In the beginning I said that Windows XP has the same problem. Windows Server 2003 Standard isn’t better.
I’ve been reading a lot about this issue recently and would like something clarified.
When using Vista 64-bit, the memory hole still exists for backwards compatibility, correct? In other words, installing 2×2GB of memory and using Vista 64-bit will only provide roughly 3.0-3.5GB of available memory assuming memory hole remapping has not been turned on, right? This is the impression I’ve received after much reading, but I’m having trouble finding an article that comes right out and says this.
Now with memory hole remapping turned on AND using a 64-bit version of Windows, you should be able to use all 4GB of memory, correct? I’ve also heard from an article that’s roughly 1 year old that memory hole remapping frequnetly causes system crashes. Is this still an issue? If this has been fixed recently, would you recommend flashing to a newer BIOS to avoid this problem on an older motherboard?
Thanks for the feedback guys. I see tons of people advising others to just upgrade to Vista 64-bit to see all 4GB, but my reading has suggested that this won’t fix anything unless it’s also accompanied by memory hole remapping.
Ryan, you are right. If you want to use 4GB, you have to enable memory remapping. 32-bit and 64-bit operating systems don’t differ here. Read this workaround to learn more about the requirements to use 4GB with Vista. I have no experience with memory remapping and Vista x64. Since more and more people run Vista x64 now because they need 4GB, the probability that you will run into problems is decreasing every day.
David, did you check your BIOS setup if your board supports memory remapping?
Here’s the article I was referring to, in case anyone is interested. It’s a year old so I’m hoping memory hole remapping has become more stable than he implies: http://www.dansdata.com/askdan00015.htm
Indeed I have and while my chipset supports memory remapping in theory, as it is new (P35) in reality the company whom made the board did think to include it as a bios option (lastest bios). Therefore I am stuck and have given up.
Maybe I will just send a nasty email to board manufacturer!
So while this is annoying, 4GB or not I will stick with Vista 64 which (this may be controversal) on my system at least, benchmarked against xpsp2/32, is now up to 70% faster in some areas.
To finish, Im in on the side of its all Motherboard critical, once that issues sorted the rest is mathmatical, i.e. follow OS guidelines, 32bitOS you not getting 4GB unless its a special one and your investing time to play with it.
David, what is the name of the manufacturer of your board? Sending them an email might indeed be helpful. The more complaints they get the earlier they will offer a BIOS update that supports memory remapping.
Ryan, thanks for the link. That’s really a comprehensive article about this topic.
[...] memory that now "fills the hole". Here’s two articles that might help you understand: Article 1 Article 2 There’s really not many situations that would result in more than 3GB of memory being [...]
I have Vista Ultimate x64 and SP1 but my computer still says i have exactly 3gb of physical RAM installed while i actually have 6gb (1gbx2 2gbx2) installed in the four slots on my motherboard what should i do?
Alex, it seems you have a hardware problem. Maybe some of your memory modules are broken or your motherboard can’t use them. I would remove the modules one by one to figure out which of them work. You should also enable memory remapping in the BIOS.