Dude, Where's My 4 Gigabytes of RAM?

“Dude … you ate my ******* schnitzel!!!” :slight_smile:

Nice post. I started my Vista usage with an x64 version but caved in and reverted to 32 Bit due to lack of software, and drivers. It’s gonna get better … but were not there yet.

Chelgrian wrote: "Windows cannot do this and requires and emulated 32 bit subsystem called WOW (Windows on Windows) which incurs a slow down. "

There is no “emulation” for 32 bit on x86-64 Windows!

Any 64bit OS offering 32bit app compatibility will require some parameter processing for 32bit OS API calls - whatever name you want to stick on it. However, this is a really minimal amount of work.

The performance impact for most 32bit apps is completely in the noise.

Even looking back almost 3 years at XP 64, the impact for games was in the 0-5 fps range, and this article is using a beta XP-64 and beta drivers. http://www.anandtech.com/showdoc.aspx?i=2085p=1

[ Aside: if you’re running on “Itanium” hardware, then there is a significant slowdown for 32bit apps, but that is another story entirely and applies to all OSs. ]

FYI - interesting tidbit: 32bit applications (compiled /3gb aware) running on 64bit Windows will have access to a full 4Gb of -virtual- address space.

Hello everyone,
can someone explain how come a video card with 1 GB of video memory will affect RAM? I thought that the 1 GB will be dedicated to the card and it will probably save RAM and not consume it.
I am kind of confused here.

Thanks

The annoying thing about this as a whole regardless if the memory is properly used or not is that Vista supported the /PAE switch up through Beta 2. When they released RC1 the option no longer functioned. I really wish they would have left it.

josh: “Without paging, x86 processors using a 32 bit address word can only access 0.5 GB of memory. See for the math.”

You know, inside our earth there is another earth which is much larger than ours …

@LS:
“Last I checked, the machine addresses memory in bytes, not bits…”

Bytes are made up of bits (8 bits = 1 byte). So, “32 bit address word” is to “4 byte address word” as “1000 grams weight” is to “1 kilogram weight.” Same idea.

I tend to think in bits when looking at address lines because they needn’t be considered a cohesive whole (once they leave the chip, anyway). Different cognitive mapping I suppose. To each his own, right?

This has been know for years. Ever since XP was released it was even noted back when I did the beta testing for it.

If you want 4gb 64 bit is the only way to go.

well just a few remarks about this. first of all dos. it has no difference on memory seeing as dos only uses up to 1mb of memory as it still uses the old 16bit mode so it would not affect the limit of 4gb. also having 4gb must be better than 3. at least the resources of windows would be bigger because if ur system is using up the top part of the memory then it would do the same with 3gb of memory. maybe windows its self only registers 3gb but can detect all four because of this problem. if you had only three gb would it not then use some of that top gb for other resources.

Do all these memory limitations apply to Windows Server 2003 Enterprise, or only to Win2k3 Standard??

Thank you, Tom

Tom - its a hardware problem. If you’re motherboard doesn’t let you see the memory then no operating system will make any difference.

So here is a statement of Doug Cook, developer at Microsoft.

http://blogs.msdn.com/dcook/archive/2007/03/25/who-ate-my-memory.aspx


Windows XP originally supported a full 4 GB of RAM. You would be limited to 3.1-3.5 GB without PAE, but if you enabled PAE on a 4 GB system with proper chipset and motherboard support, you would have access to the full 4 GB. As more people began to take advantage of this feature using commodity (read: cheapest product with the features I want) hardware, Microsoft noticed a new source of crashes and blue screens. These were traced to drivers failing to correctly handle 64-bit physical addresses. A decision was made to improve system stability at a cost of possibly wasting memory. XP SP2 introduced a change such that only the bottom 32 bits of physical memory will ever be used, even if that means some memory will not be used. (This is also the case with 32-bit editions of Vista.) While this is annoying to those who want that little bit of extra oomph, and while I would have liked a way to re-enable the memory “at my own risk”, this is probably the right decision for 99.9% of the general population of Windows users (and probably saves Dell millions in support costs). See the relevant KB article and a TechNet article for details.
http://support.microsoft.com/kb/929605/en-us
http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2mempr.mspx

Great article. LOTS of unnecessary nitpicking in the comments unfortunately and of course the usual wiki powered posts getting things half wrong or misunderstanding and serving only to confuse people. My only advice (take it for what it is worth) is for folks coming here to stick with the article and ignore the vast majority of the comments.

On a topic like this, you cant really just jump to wiki and expect to become an expert without having a lot of foundation knowledge and, more importantly, experience. Suffice to say that it really isnt as difficult as it may seem and that the original article is really just fine on this topic.

Ill just leave with a few points… The address width of a processor architecture does indeed determine its virtual address space. So for a processor with 32bit address support, we are talking about 2^32 or 4GB of address space. Physical address space refers to physical RAM. In the vast majority of cases, virtual space is LARGER than physical space.

There is nothing defficient in the original Windows NT 32 bit kernel and nothing “missing” that has anything to do with drivers. It is a typical 32bit OS running on 32bit hardware and, as such, it has a virtual address space of 4GB which maps to an amount of physical RAM determined by the chipset, motherboard and memory module density. As the physical RAM approaches the size of the virtual memory limit, you can have trouble if some of those addresses have been mapped for other uses. Like video RAM. Yes video RAM is dedicated on the card, but the OS has to be able to get to that RAM. The way that happens is that the video cards memory is mapped to a virtual address range. Its that easy. This doesnt matter until there is PHYSICAL RAM in that address range.

Any technique which circumvents the limits of a virtual address space will involve paging. Paging sucks in nearly every case. It doesnt matter that it dates back to the original IBM VM OS, was on PDP 11s, was what we lived with back in the DOS/EMS days (nitpickers please just die here rather than stating the exact first OS that paging dates back to). The fact is that the article is correct. PAE is an ugly hack that essentially allows you to page out multiple 32bit address spaces in a 36bit physical address space.

The Intel FLAT 32bit memory model (and the comment above indicating that even within 32bit space the Intel architecture is paging is a huge oversimplification of a complex topic) remains but is now augmented by a page table which can physically map to 36bit of RAM (64GB).

This IS a hardware issue and, like most hardware issues, IS present in ANY OS. So Linux and Mac fanatics, sorry, but this isnt fuel for your holy fires.

Again, GREAT concise and clear summary of a topic that, as you can see by the bulk of the comments, still causes a lot of trouble.

I’ve just had the same problem:

http://digitalconsumption.com/forum/Gigabyte-GA965PDS4-with-3GB-or-4GB-RAM-Memory-Hole

Upgraded to 4gb and only seeing the benefit of half of my upgrade.

The galling thing is that I bought the motherboard because it specifically stated that it supported 8GB of RAM. Gigabyte support just told me that no memory remap function is available.

It doesn’t matter if you have a motherboard that supports 8GB or 64GB if your OS is only 32-bit. To figure out how much memory a 32-bit OS could see, it would be 2^32 = 4294967296, which is ~4GB. Similarly with 64-bit, 2^64 = 18446744073709551616, much much more. Best bet would be to upgrade your OS to 64-bit Linux or 64-bit Vista.

Great discussion, really helped me get my head round it, and i’m still not sure if i have. lol
i have an asus A8V Mobo, AMD 4200 x2, and 4gb RAM, and vista 64, if i enable “memory hole” in the bios i get to see all the ram, had to back peddle a few bios versions to achieve this without an in built by asus apparantly, USB error (put in to safe guard the system from “possible” crashes apparantly, gee thanks asus.
so i get to see all the memory, i boot to vista 64 (its definately a slower boot) vista sees all the mem to, but the nic doesn’t work, no conflicts or errors, just says no cable is plugged in, and thats that.
have to admit though, i love the feel of vista 64, everything i need works with it, and even though i only see 3456mb i’m sold :slight_smile:
however if anyone knows how to remap a “Marvel Yukon” NIC’s addresses i’d be interested to hear about it.

Thanks for nice technical article. Had problems detecting full 4 GB RAM with my Intel DG965WH mobo. Finally got a great tip from FedoraForum.org to downgrade system BIOS downto release 1669 and that helped. Many similar reports around the net from other Intel G965 mobo users. I have heard mentioned Intel mobo models DP965LT, DG965SS,
DG965RY, DG965PZ, DG965OT, DG965MS, DG965MQ, DQ963FX, DQ963GS.

If you’ve that kind of mobo and system either seens only 3 GB of 4 GB total, perhaps booting up and running extremely slowly after adding memory upto 4 GB, try downgrading the system BIOS to release 1669. It’s available from Intel support web under ‘previous releases’. Currently the latest BIOS release is 1687 and it has the problem. Perhaps some future release will have this problem fixed.

“That, my friends, is why Apple does not offer 4GB of RAM in laptops. Which makes me wonder how all the other manufacturers explain to the rich idiots who splurged their kilobucks on their loaded Lenovos, Toshibas and HPs, why they can’t see all of their expensive RAM.”

Ah but they do…look at the new MacBook Pro’s.

Shame on the driver writers that still write drivers that does not work with PAE!!! PAE support had existed since Windows 2000!!! In fact, I think PAE support should have been required to earn the Designed for Windows 2000 logo!!!

If all 32 bit operating systems were limited to 4 gigs of RAM I might be content, but all are not unless you are trying to tell me that my server 2003 x86 doesn’t have 16 gigs of RAM and that it is lying to me in the system info pages… my xp sys info page tells me i have 4 gigs of physical RAM but the system properties reports 3 gigs… this is a microsoft limitation, period. The made their server capable of using more than 4gb so there is no reason they can’t do the same for XP or Vista except that if they do, then they won’t sell as many x64 copies of the OSes for those of us wanting more RAM…

Core 2 duo’s are 62 bit architecture, + the only real reason for many home PC users to have more than 2gig ram at the moment is for games and then its counteracted if they havent got an old pc on which to play them on.

Finally hes wrong about GFX cards, the 1gig ram card the 8900 will be out in november in the overpriced early adopter category.

Even then doesant really matter as the intensive visual; apps and hd stuff runs through the card anyway.