Dude, Where's My 4 Gigabytes of RAM?

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.