3GB RAM Installed and Detected by BIOS, Windows Vista 32bit Only Sees 2GB

Since you mentioned in a comment that Server 2008 is only reporting 2 GB, then something is very wrong with your configuration.

  1. What does your BIOS report for installed RAM? Does it see 4 GB?
  2. According to the manual:
    • Memory Remap must be Enabled
    • Memory Mirroring must be Disabled
  3. How are your modules installed? The manual specifies that they have to be installed in pairs, and that the paired slots are adjacent to each other. According to your post, it looks like you don't have your paired ram installed into adjacent slots. Verify the physical installation of your modules against the motherboard manual/motherboard imprinting.
  4. Have you tried each pair of 1 GB modules individually?
    • If so, test each pair with Memtest86+ to ensure that each pair works correctly.
    • If each pair checks out, try changing the order they're installed in.

Considering the evidence given above, the two most likely things to consider are:

  • Memory mapped hardware is limiting the memory available to a 32bit operating system.

  • Windows is artificially limiting the memory available to the operating system.

Hardware limiting

With a 32bit OS, you have 4GB of address space. Any peripherals with memory mapped IO (IO ports, network cards, graphics cards, other motherboard or add-in cards) will take up a portion (usually quite small) of that address space. Any memory used for memory mapped IO cannot be used for main memory.

The worst hogs of memory mapped IO are graphics cards. If you have two graphics cards, each with 1GB or memory, 2GB of your address space will be used up, leaving you with only 2GB of main memory, however much physical memory you have installed.

This is not a problem on a machine with a 64bit OS, since those 2GB can be mapped well away from your main memory, but on a 32bit OS, you are limited to 4GB in total (without using tricks that Microsoft have disabled in their non server 32bit OS's).

Artifical limiting

The other option is that some hardware or software set a restriction on the amount of memory available to Windows when it was isnstalled and that artificial limit is still in place, even after installing more memory.

I've never done this under Vista, but under XP you would run msconfig and look at the "Advanced Options" on the "BOOT.INI" tab. If the "/MAXMEM" was set, then XP was ignoring all memory above this.

Searching the web, it looks like you use bcdedit under Vista. A nice description of how to use it can be found here. However, as always, be sure you understand what you are doing before messing with these things.

Other possibilities, specific to server/workstation systems

Looking through the X6DAL-XG manual, I wonder if the "Memory Mirroring and Sparing" is enabled in the Bios:

Select Enabled to enable Memory RAS (-Mirroring and Sparing) to allow the system to create a mirror copy of data written to the memory for data security. The options are Disabled and Enabled.

I would guess that in memory mirroring mode, only 4 banks are used, which would explain why removing the 512MB Dimms made no difference to the memory visible to Windows.


While not solving your problem outright, it may help in diagnosing it - Have you tried running a linux live cd like Ubuntu? Ideally you should try booting both a 32bit and 64bit version - the 64bit should see the extra RAM without issue, and if it only sees two then you almost definitely have a hardware related problem. If the 32 bit linux also only sees 2GB of RAM, then as stated by Mark Booth you probably have memory mapped I/O taking up the rest.

Video cards tend to be the worst offenders in eating up available RAM, you don't happen to have two 1GB cards installed do you?

Memory Remapping

Many modern BIOS will have an option to remap the memory space to avoid MMIO issues - though this only works for 64-bit operating systems or PAE enabled systems. Check your BIOS for this setting.

http://support.microsoft.com/kb/929605