Why your 4G of RAM Windows 32-bit system may not report all of the 4G (even though it is in use )


The best explanation of this I have yet found is here; with this article as a supplement.


This explanation makes it pretty clear that even if Windows 32-bit doesn’t report the memory, it is getting used by some part of the hardware.


If you had less memory, less would be reported since the hardware still requires that reserved memory space.


Note that PCI-E maps video memory into the 4G addressable space and thus leaves less system memory available for applications. So a 768m graphics card reduces the memory space “seen” by the OS as available to applications in terms of both physical memory and process address space.


Still, any physical RAM above 2G means standard 32-bit processes stand a chance of fitting entirely into RAM together with the OS which would mean zero page faults to virtual memory pages on the hard disk. That is certainly good for performance so it is worth the effort to try to stick to the mobo/chipset combos that support addressing 4G of RAM.


Finally, notice the potential for PAE and DEP errors. This helps to explain some of the DEP errors the community sees from time to time.


 


Comments (6)

  1. tartag says:

    Hi Phil,

    When you say, « Note that PCI-E maps video memory into the 4G addressable space and thus leaves less system memory available for applications. So a 768m graphics card reduces the memory space "seen" by the OS as available to applications in terms of both physical memory and process address space»,

    does it means the 768 card is better? If yes, is it alot much better than 512m, per example?

    Sorry if I ask, my first language is not english.

    Happy New Year to you and your collegues at ACES, and thank you so much for the tons of hours of fun you give with FS. Merci!

  2. Phil Taylor says:

    Tartag:

    Memory size in this context is not about how good or bad the card is. You could easily have a mid-range card with more memory than a high-end card but less performance.

    What this is talking to is the balance between video memory and system memory available to the application and how Windows reports available memory.

  3. Bikedude says:

    "Finally, notice the potential for PAE and DEP errors. This helps to explain some of the DEP errors the community sees from time to time."

    …makes it sound as if DEP related *bugs* are somehow PAE or DEP’s fault.

    DEP is a simple mechanism to prevent write access to memory pages marked as read-only. Memory pages containing code has to be marked as read-only to allow execution.

    The API to govern this has been available since 1993 (NT 3.1 supported DEP on non-X86 platforms).

    DEP related exceptions are serious bugs and MUST be dealt with swiftly. The developer has absolutely no excuses to drop fixing DEP related bugs. I’d go so far to say that DEP "issues" not addressed within a month: Return the offending piece of hardware or software for a full money refund.

    As for the linked blog entry, it is poorly written IMO. Refer to Raymond Chen’s series on PAE and memory limits. Much more accurate.

    "If you are running 32-bit Windows, you must live with it. You will not ever see all 4GB of RAM you’ve paid for." is not necessarily correct. 32-bit Windows XP/Vista: Yes. 32-bit Windows Server OTOH offers full PAE support (XP merely enables PAE to get at the DEP feature, but doesn’t dare to extend the memory space since many drivers, nVidia’s included, gets confused when faced with addresses above 2^32). Windows 2000 Professional might also be PAE capable, but I don’t know this for sure.

    "Does your chipset allow pages to be remapped above 4GB?" most systems I have seen allows this. And it isn’t about remapping pages. We’re usually talking about remapping an entire memory module (or 1GB worth of memory) above 2^32 (4GB).

    "In the end a 32-bit OS and/or application can only, ever, handle 4GB of memory at a time, the AWE stuff just swaps chunks of memory in and out of that 4GB space, thus fooling the application and OS into using more space than it can “see”. "

    AWE helps a 32-bit process swap in memory when used with an OS that can address more memory. PAE btw only makes sense with 32-bit Windows, since 64-bit Windows sees a flat address space by its very nature… I doubt the OS has to resort to using AWE… Several processes can run concurrently on 32-bit Windows, and they all have a 4GB address space (by default half that is occupied by the kernel). Note that his statement above conflicts with his initial assertion that 32-bit Windows can never utilize more than 4GB of memory. (Windows Server certainly can!)

    PAE is a requirement for DEP to work. All CPUs sold today are PAE compatible. Heck, all of them are 64-bit (with few exceptions, and no exceptions among those using FSX).

    In short: TabBlogger’s blog entry is incoherent and conflicting to say the least. For the definitive last word in all this, check out the blog archives of Raymond Chen and Larry Osterman.

  4. Suma says:

    This blog is very confusing, causing more misunderstanding. The articles linked are good, though.

    Take one example from the blog:

    "This explanation makes it pretty clear that even if Windows 32-bit doesn’t report the memory, it is getting used by some part of the hardware.

    If you had less memory, less would be reported since the hardware still requires that reserved memory space."

    This is not true. The problem here is the 4 GB limitation of the address space. When you have less then 3 GB, you will not hit this limitation, as the address space used by the HW and BIOS is not needed to access the RAM. Moreover, the HW and BIOS are not using the RAM (the physical memory), only the address space.

    Most systems with 3 GB RAM or less do report almost all this memory in Windows and you can access it.

  5. Phil Taylor says:

    Suma:

    the drivers and BIOS still take their bit regardless of how much is installed, that doesnt change in the equation. so you never get full memory reported.

  6. Suma says:

    Phil:

    This is a different issue, though. On 2 GB you get almost all memory reported (actually the difference is that small that it is easy to miss – e.g. my WinXP in My Computer properties report 2 GB with 2 GB installed ). Once you start hitting the 32b barrier, a significant part of physical memory is not used for anything, and the difference between what you have and what is reported (and used) starts to be very significant (like 3.5 GB reported when you have 4 GB installed).

    > If you had less memory, less would be reported

    … i.e. 2nd "less" is different than the 1st "less" here. A lot of less memory (e.g. 3 GB) means only a little bit less reported (3- epsilon GB ).

    I am not indicating anything bad is going here, or Windows are doing something wrong. This limitation is inevitable with 32b system. I only wanted to point out your explanation is somewhat misleading, esp. compared to the papers your are linking to.

Skip to main content