I have always wondered about this and never totally understood how 32 bit machines are addressing more than 4 GB of RAM. I mean, there are no more address lines left, correct?

I know even in our facility that we have Dell database servers with 8 GB of RAM addressable by the machine and a 32-bit version of SQL Server. Is it achieved similar to EMS memory of the 20 address line 8086, using a window of rotating memory?


To support more than 4 GB memory Windows uses Physical Address Extension (PAE). It uses paging tables to map the memory greater than 4 GB. By doing this the physical address size is increased to 36 bits, or 64 GB. PAE is used in 64-bit OS'es as well; in this case the maximum size is doubled to 128 GB.

This method does mean that each process is still limited to a maximum of 4 GB of memory.

  • So explain how Windows Server Datacenter Edition x86 supports 128GB? – tsilb May 3 '09 at 1:57
  • 2
    It doesn't. microsoft.com/windowsserver2008/en/us/compare-specs.aspx It's limited to 64 GB, just as Sam said. – Sören Kuklau May 3 '09 at 18:42
  • 1
    Not just Windows. All operating system which support the processor feature PAE can do this. To find out if your processor supports PAE, check the output of "cat /proc/cpuinfo". No idea how to check in Windows though. – wzzrd Jun 17 '09 at 6:36
  • In the normal, default 32 bit Windows OS configuration, 2 GB of the virtual address space are allocated to the process’ private use and the other 2 GB are allocated to shared and operating system use. Therefore only 2 GB can be used by a process in reality.(maybe 3 with the /3GB but never all of them from psychical RAM) Only that portion of the address space that is actually referenced (used) by a process or the system is associated with a page frame in real memory, or in the pagefile. – user126330 Mar 24 '10 at 20:05

There's an Intel feature called PAE which in effect enables the OS to utilize more than 4GB of memory. Each application can only use 2 (or 3) GB of memory space but as the OS now has more memory to spread stuff out over - there will be less sharing between processes and hence some possible performance benefits.

The real magic however begins when using the AWE API with which you can actually use more memory with a single 32bit application that is especially written for this. This is what SQL Server is doing.


It's called PAE. It works by changing the page table layout on the processor to support up to 64 GB of RAM. However, any one application can still only use 2-3 GB (depending on how the kernel is set up, usually 2 GB for Windows and 3 GB for Linux). Also, PAE tends to make the machine run slightly slower, because page table lookups have an extra level to go through.

It should be supported on any relatively recent processor.


Well, your server operating system might be 64-bit. SQL maybe only using 4 gigs of the 8, or some 32-bit programs spawn more processes (like video encoding software, in my experience) to take advantage of the ram.


An application on a 32 bit OS can access of 4GB of address space. But this is virtual address space and has absolutely nothing to with the size of physical RAM. Most modern 32 bit processors have sufficient address lines to address 64GB of RAM. Blocks of 4K bytes are mapped to a process's address space as needed.

It is PAE that allows access to more than 4GB of RAM. It is not a hack as often claimed but is quite efficient. PAE doesn't make any fundamental changes, it is only the details that are differnet. In fact, most modern system are using PAE by default. DEP relies on the PAE kernel.

Unfortunately, access to RAM beyond 4GB is limited to servers. A desktop may be using PAE but will ignore any RAM beyond 4GB. There are a number of technical and marketing reasons for this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.