101 / 273
Mar 2007

I have read the posts and most if not all is way above me. But is there a consensus about how much RAM the average user should get? So if I a person buys a PC or makes one, and plans on using Vista 32, they only should invest in 3 gigs of memory because anything over that won’t be seen without some workarounds. Is this right?

If anyone is interested, I managed to get the FULL 4GB to get recognized on my machine. Its an A8N32-SLI Deluxe and previously was only getting about 3.3GB.

  1. Update bios to v1303.
  2. Enable Memory Hole. (This is Important!!)

I also disabled the serial parallel port and a few other things but I’m pretty sure thats not of much concern.

Cheers.

Thank you for the clarification. So the most common Windows versions (XP and Vista) actually don’t support PAE to access RAM beyond the 4 GB limit, due to concerns about driver compatibility.

That explains why I only see 2 GB under XP when telling my BIOS to remap memory around the PCI “hole”, even though Memtest can see all 4 GB. So PAE is really a nonstarter for most readers of this blog.

xp and vista is no god I personaly stick whit my win 2003 server

i have sql servers whith 16 G of ram

but a guy from microsft told me that 2003 server will not work whith more then 20G of ram i have a server where ai can plug 120G of ram :smiley:

This is confusing. Even the “sum up” has a few points wrong.

Enabling “PAE” means that an extra level of page tables gets used. This leads to the following changes:

  • One extra level is added to the page table lookup. This can possibly make memory address slower, but usually the difference is not noticeable since the lookup is cached in TLBs.

  • Data Execution Protection (DEP) is possible. Adding the extra level of page tables frees up a few bits in the page table descriptor. One of these newly freed bits is now used to mark a page as not-executable.

  • Access to up to 16 GB of physical memory is possible.

  • Some kernel pointers are now 64 bits.

So if you enable PAE, and your motherboard actually connects at least 33 address pins from the CPU to the memory, and your BIOS supports memory remapping, you should be able to get a full 4 GB of RAM, right?

Nope. Not if you have XP SP2 or Vista, anyway.

Notice that part about kernel pointers being 64 bits. A whole bunch of drivers don’t handle that correctly. So as of XP SP2 (also in Vista), even in PAE mode, pointers are limited to 32 bits. Even though the OS and the hardware is fully capable of working with more memory, the OS never touches anything above the 4GB boundary. This was a conscious decision. Stability of the system was considered more important than access to the extra physical memory.

“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.

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.

1 month later

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.