Windows – Can some programs really access “unavailable” RAM on a 32-bit system

32-bitmemory-limitwindowswindows 7windows xp

Question

I’ve seen some programs (especially RAM-drive software) that purport to being able to access the “unavailable RAM” on 32-bit systems (including XP). I’m wondering if they actually can, and if so, how they manage to do it.

Technical

There are several different way in which the amount of RAM installed in a 32-bit Windows system can be limited (simplified here):

  • 2:2 (2GB) Virtual Address-space

    Because of the way that Windows partitions the address space, programs can only allocate a block of memory up to 2GB in size. The /3GB switch can mitigate this to some degree by changing the ratio from 2:2 to 3:1.

  • 3.xGB – 4GB

    Due to hardware address mapping (MMIO), some of the address space will be used up by other devices installed (or built-into) the system. Memory remapping may help with this on systems that support it.

  • 4GB+

    Because a 32-bit pointer can only point to up to 232 addresses, it can only point to up to 4GB worth of data. Using PAE mode can help with this by using larger pointers and “pages” (much like the old 16-bit DOS segment:offset memory scheme, which is ironic since protected mode was supposed to be better than real mode).

  • Microsoft’s Marketing Limits

    In addition to mathematical limits of hardware and software, Microsoft also imposes an artificial limit on Windows (*including 64-bit versions) so that they can market different editions for different purposes—and prices.

Specifics and Examples

My question is not about how Windows or regular programs (like Notepad) are affected by any of this. I’m already familiar with these limitations and their typical work-arounds (including the Russian patch that makes the Windows 7 kernel more like the Windows Server 2003 kernel), and I am not interested in rehashing them.

My question is about programs that claim to be able to overcome one or more of these limits.

I think I’ve seen other programs make claims like this, but I’m certain that some RAM-drive software does. Some examples include Raxco, DATARam, and Gavotte. I’ve previously tried a couple of RAM-drive programs that made such claims (I think Gavotte was one of them) but was not able to get any to actually access the extra memory.

Claims

Raxco makes the following claim:

Not only can RamDisk Plus create RAM disks with the hidden RAM above 4GB; it can also use the inaccessible memory between 3.2GB and 4GB.

And later on they mention that:

Keep in mind, this can only be done if Windows reports the hidden RAM above 4GB.

The first statement is good because unlike most of these programs, it is not vague about which limit(s) it overcomes.

However, like most of these programs, it is vague about what is required (hardware- and software-wise) for it to access the extra memory, and says nothing about how it works or what kind of side-effects it has (for example, if it merely adds the /3GB switch or enables PAE mode, then it is not “overcoming” the problem, it is enabling a special Windows mode—that would affect the OS and all programs—and accommodating that).

Jens’ discussion of the Gavotte RAM-drive seems to indicate that they (Gavotte at least) do in fact work by using PAE. It also mentions the article Geisterspeicher from the German magazine c't as the source of the breakthrough. Unfortunately not only is the article not free, but my German is not yet fluent enough to read a technical article, so I don’t know if it gives details of how it works or its requirements.

Summary

Does anybody know if there is any truth to these programs’ claims? Has anybody actually seen it work? If so, what is required to make them work? Also, how exactly do they pull it off (do they affect the whole system and all programs by enabling /3GB, PAE, etc. or are they doing something special like using extra-large pointers and accessing hardware directly?

Best Answer

I have seen some programs (especially RAM-drive software) that purport to being able to access the “unavailable RAM” on 32-bit systems. That is, even though Windows cannot see or access some of the 4GB that is installed on a 32-bit system, these programs claim that they can.

I guess technically this is possible if the programs manages to insert itself early enough to activate either PAE or 64 bit mode, and then emulate normal operation to the OS before it finishes loading.

On my 32-bit system with 4GB, Windows sees only 3.20GB, but so does the BIOS.

This is because a 32 bit system has 4 GB address space. Part of that (ideally 512 MB or less) should be used for the RAM. The rest is for PCI address space, virtual memory addresses etc.

It is not a matter of using PAE or the /3G switch, because it’s not a Windows limitation, it is a motherboard limitation. If the chipset and memory controller can’t access beyond that, then I don’t see how Windows or any software can either, even if they access the hardware directly.

True. If your memory controller or the motherboard is limited to 4 GB then that is that. Game over.

I know that using PAE requires using either a server or 64-bit edition of Windows

No. This is wrong.

PEA works on a 32 bit OS. It uses 36 bit addressing. Think of it as 16 (24) windows of 4 GB (232) each. Or think of it as a book with 16 pages. You can not see more than one page at the same time, but you can turn the pages.

(though I don’t see how even these versions of Windows can access what the BIOS cannot). However these programs say nothing about that and imply (or outright say) that they work for normal users with consumer versions of Windows.

PAE is an option on these windows operating systems, assuming that the hardware supports it.

  • Windows 7 (32 bit only)
  • Windows Server 2008 (32-bit only)
  • Windows Vista (32-bit only)
  • Windows Server 2003 (32-bit only)
  • Windows XP (32-bit only)

Source.

As you can see that is on 32 bit OS's only. Both the server and the consumer versions. I seem to recall that it was later removed from windows 7 SP1, though that is not mentioned on the MS site.

I have tried a couple of these programs (specifically RAM-drives), but was not able to have it access the upper memory. Does anybody know if there is any truth to these programs’ claims? Has anybody actually seen it work? And if so, how exactly do they pull it off?

Without knowing which programs we can not answer that.

However they might work on a motherboard which supports PAE, but not on a motherboard which either lacks the copper traces for it, or whose memory controller does not support it. (e.g. old CPU's, old chipsets, atom CPU's older than Pineview or Diamondville).

Related Question