Access more memory, even on a 32-bit system

No matter how much memory you have in your PC, you may not be getting the most out of your installed RAM.

A few little-known system tweaks can improve the way Windows manages memory, freeing up more RAM for your applications.

As described in an entry on the Microsoft Developer Network, all non-server 32-bit versions of Windows XP and Vista impose a memory limit of 4GB. Your system may allow you to install more than this amount of RAM, but with few exceptions, the extra memory won't do Windows or your applications any good.

Moreover, even if you have 4GB of memory installed in your PC, you may not be able to use it all. For example, if your video card comes with 1MB of memory and you have 4GB of RAM, your system actually has 5GB of memory physically installed. But Windows will use only 4GB of that total, regardless.

It gets worse: according to a comment posted to the MSDN article, Windows itself is getting only 3GB because the video card gets 1GB. This happens because the memory aperture — a portion of system memory — is used to work with the video system.

Ways to break through Windows' RAM ceiling

Fortunately, there are techniques you can use to get around Windows' system-memory limitations. One method is to use Physical Address Extension (PAE), a feature of x86 processors that lets 32-bit operating systems overcome the 4GB memory limit.

Another MSDN
article explains that 32-bit Windows operating systems support PAE. Even though XP and Vista still cling to the 4GB limit with PAE enabled, the feature may help you get back some of your unused RAM.

In one or two rare cases, a developer may take advantage of PAE technology to get around the usual Windows limits. For example, reader Alan Gorski reports that when he increased a computer to 8GB, the program AutoCAD was able to open large drawing files without generating the "out of memory" errors he previously had seen. As Gorski notes, "AutoCAD has long used special memory management techniques since the DOS days to maximize use of available RAM."

There's a good chance your system is already using PAE. That's because Windows relies on the technology to support the security feature known as Data Execution Prevention (DEP). For more information about Windows and DEP, see my
Top Story in the May 3, 2007, issue.

If a computer supports hardware-enforced DEP, then PAE is enabled as well. Here's how to check for it in Windows XP:


  • [FONT=Arial,Sans-serif]Step 1. Choose Start, Run.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 2. Type sysdm.cpl and press Enter.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 3. Click the Advanced tab. In the Performance box, click Settings and choose the Data Execution Prevention tab.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 4. Look for a status message at the bottom of the dialog box. If it indicates that your hardware does not support DEP, chances are PAE is not enabled.
    [/FONT]
[FONT=Arial,Sans-serif]To check your system's PAE status in Vista, do the following:
[/FONT]
  • [FONT=Arial,Sans-serif]Step 1. Press Win+R to open the Run dialog box.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 2. Type SystemPropertiesDataExecutionPrevention and press Enter.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 3. If prompted by User Account Control, click Continue.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 4. If the status message at the bottom of the dialog box says your system supports DEP and the "Turn on" button is selected, then PAE is enabled as well.
    [/FONT]
[FONT=Arial,Sans-serif]If PAE is not already enabled on your system, here's how to activate it in Windows XP:
[/FONT]
  • [FONT=Arial,Sans-serif]Step 1. Choose Start, Run.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 2. Type notepad c:\boot.ini and press Enter.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 3. Under the [operating systems] heading, look for a line that contains the /noexecute switch, which turns software DEP. For example, it may be /noexecute=optin, /noexecute=optout, or /noexecute=always on. Place the cursor directly after that switch and type a space followed by /pae. Save the file and reboot.
    [/FONT]
[FONT=Arial,Sans-serif]If you don't have DEP enabled on Vista (or you don't want it enabled), you can still activate PAE by following these steps:
[/FONT]
  • [FONT=Arial,Sans-serif]Step 1. Click Start, type cmd.exe and press Ctrl+Shift+Enter.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 2. If prompted by User Account Control, click Continue. This opens a command prompt window with administrator privileges.
    [/FONT]
  • [FONT=Arial,Sans-serif]Step 3. At the prompt, type BCDEdit /set PAE ForceEnable and press Enter.[/FONT]
[FONT=Arial,Sans-serif]You can read more about PAE in this post on Microsoft's TechNet site.

Microsoft warns in another TechNet article that some drivers will not load if PAE is enabled. After you make this change, keep an eye on your system. If you have problems with drivers or your system starts acting up, remove the /pae switch from boot.ini in XP, or enter the following command line in an administrator command prompt in Vista:

BCDEdit /set PAE ForceDisable

For more information on the switches and settings related to PAE, consult this MSDN paper, "Boot Parameters to Configure DEP and PAE."
[/FONT]
[FONT=Arial,Sans-serif]By Scott Dunn [/FONT]
[FONT=Arial,Sans-serif]
[/FONT][FONT=Arial,Sans-serif]Access more memory, even on a 32-bit system
[/FONT]
 
Sorry if this is a little OT but I've read somewhere that a 32bit XP or Vista can only recognize or use 3GB of 4GB installed ram? And if you installed an 8GB ram the system will only show 7GB installed?

Now reading quickly on this topic, it looks like even tho you got 7GB showing your system can only use 4GB? I got a little confused about the subject sorry.




In a computer all bytes in the memory system need a unique name. This is called an address. This address serves as the means for the operating system to communicate to/from that particular location/device and should not be confused with the physical resource. For example, if you have 2 GB of main memory, then there are 2147483648 bytes of RAM in your machine, each of which require an address for the operating system to communicate to it. To give these all an address you need 31 bits to do it.

Now, if/when you have 32 bits, you can name 4 GB (2 bytes to the 32nd power = 4GB). So math is why the total addressable space available in a 32 bit OS is 4GB.

You may think ”Hey, 4GB of address space… 4GB of RAM… What’s the problem” The problem is that memory isn’t the only thing needing an address, and because of that the OS runs out of addresses and cannot communicate/locate any more bytes. This is why if you install a total of 4GB worth of RAM, the system will detect/use/display less than 4GB of total memory because address space *must* be allocated to other critical functions, such as:

- System BIOS (including motherboard, add-on cards, etc..)
- Motherboards resources
- Memory mapped I/O
- Configuration for AGP/PCI-Ex/PCI
- Other memory allocations for PCI devices

Different onboard devices and different add-on cards (devices) will result of different total memory size. e.g. more PCI cards installed will require more memory resources, resulting of less memory free for other uses.

This limitation applies to most chipsets & Windows XP/Vista 32-bit version operating systems. Again, this is a limitation of the Operating System not having enough address space to allocate to the system *and* the RAM. Not allocating address space to devices renders them inoperable. Not allocating addresses to RAM simply results in the unaddressed section not being used in an otherwise fully functional computer. Therefore the OS designers assign RAM last.


If you install a Windows operating system, and if more than 3GB memory is required for your system, then the below conditions must be met:

1. A memory controller which supports memory swap functionality is used. The latest chipsets like Intel 975X, 955X, Nvidia NF4 SLI Intel Edition, Nvidia NF4 SLI X16, AMD K8 and newer architectures can support the memory swap function.

2. Installation of Windows XP Pro X64 Ed. (64-bit), Windows Vista 64, or other OS which can provide more than 4GB worth of address space.



Note: According to the latest Change Log published by Microsoft, Windows Vista 32bit SP1 will display the installed amount of RAM. This is a display change only.


To add: The original topic is about using a feature called "Physical Address Extensions" to add another table of addresses which can be used to communicate to/from more resource. Think of it like two identical phone books, since they contain the exact same information, except on the other side of them are two different sets of people. So you could find the exact/correct address, but if you didn't use the correct book...

I don't know where the 8GB/7GB bit came from. But the limitations here are that the same item cannot use both tables at the same time - So you end up with two blocks of 4GB each, not one contiguous block of 8. Also, your programs and drivers have to be specifically written to recognize and use it properly: They have to know which book to look in. So it can be made to work in a managed/professional environment. But it's not for a consumer, who by and large 'just wants to install the program and have it work'.


p.s. - Apologies for the cut/paste - This topic comes up very, very frequently on another forum and so I indulged in the... convenience... of a canned answer saved in a local file.
 
Last edited:

My Computer

System One

  • Manufacturer/Model
    Proudly Built by Me!
    CPU
    Intel Q6600
    Motherboard
    DFI UT LP P35 T2R
    Memory
    8GB OCZ Reaper DDR2 800 C44GK 4-4-4-12 2T
    Graphics card(s)
    Sapphire Radeon 4870x2
    Sound Card
    AuzenTech Prelude 7.1
    Monitor(s) Displays
    1 Acer P243 24" and 1 Samsung T260 26" Monitor/HDTV
    Screen Resolution
    Both are running at 19x12
    Hard Drives
    Seagate 1TB 7200.11 (Vista x64) Seagate 500GB 7200.11 (Win 7 x64)
    PSU
    OCZ GameXtream 900w
    Other Info
    FSB at 400 (1600) Mhz, CPU Multi @ 8 for 3.2Ghz
Sorry if this is a little OT but I've read somewhere that a 32bit XP or Vista can only recognize or use 3GB of 4GB installed ram? And if you installed an 8GB ram the system will only show 7GB installed?

Now reading quickly on this topic, it looks like even tho you got 7GB showing your system can only use 4GB? I got a little confused about the subject sorry.

32-bit OS can see 4GB of RAM. All your hardware is mapped within the 4GB limit. I have XP 32-bit and XP 64-bit installed on my 8GB workstation. 32-bit saw 3.2GB in Windows and 4GB at POST. XP x64 saw 8GB for both Windows and POST. In 64-bit OS, hardware is mapped above 16GB mark. I have 16GB on my Vista x64 Ultimate workstation. Vista is limited to 16GB. Hardware is addressed starting at 16GB.
 

My Computer

System One

  • CPU
    pair of Intel E5430 quad core 2.66 GHz Xeons
    Motherboard
    Supermicro X7DWA-N server board
    Memory
    16GB DDR667
    Graphics card(s)
    eVGA 8800 GTS 640 MB video card
    Hard Drives
    SAS RAID
Sorry if this is a little OT but I've read somewhere that a 32bit XP or Vista can only recognize or use 3GB of 4GB installed ram? And if you installed an 8GB ram the system will only show 7GB installed?

Now reading quickly on this topic, it looks like even tho you got 7GB showing your system can only use 4GB? I got a little confused about the subject sorry.

Things are very simple: No matter how much ram you have installed on your pc with 32bits OS, the OS simply can't access and use more than 3.5GB or 4GB of RAM.
This means that even if you install on your system 32GB of Ram, the 32bit OS will only be able to access 4gigs. :geek:

True, but even less, as the machine grabs about .4 to .8gb of your seen RAM for hardware, so with 32gb RAM installed a 32bit system has access to only about 3.2 to 3.6gb (depending on your hardware.)
 

My Computer

System One

  • Manufacturer/Model
    Scratch Built
    CPU
    Intel Quad Core 6600
    Motherboard
    Asus P5B
    Memory
    4096 MB Xtreme-Dark 800mhz
    Graphics card(s)
    Zotac Amp Edition 8800GT - 512MB DDR3, O/C 700mhz
    Monitor(s) Displays
    Samsung 206BW
    Screen Resolution
    1680 X 1024
    Hard Drives
    4 X Samsung 500GB 7200rpm Serial ATA-II HDD w. 16MB Cache .
    PSU
    550 w
    Case
    Thermaltake
    Cooling
    3 x octua NF-S12-1200 - 120mm 1200RPM Sound Optimised Fans
    Mouse
    Targus
    Keyboard
    Microsoft
    Internet Speed
    1500kbs
    Other Info
    Self built.
Your statement about Windows not being able to use anything more than 4GB becuase it is 32bit, is just not true, there are 32 bit versions of 2000, 2003 Advanced Server, Enterprise, Datacenter Edition, that can take advantage of way more than 4GB of RAM, and is it because PAE.

The Windows 2000 and Windows Server 2003 memory managers use PAE to provide more physical memory to a program. This reduces the need to swap the memory of the page file and results in increased performance. The program itself is not aware of the actual memory size. All the memory management and allocation of the PAE memory is handled by the memory manager independently of the programs that run.

There is an inherent limit of 4GB with 32bit, but the PAE overcomes this in the above mentioned OS's.

http://support.microsoft.com/default.aspx/kb/283037

you can get windows to recognise any ammount of ram but you cant get it to use it , its a limitation of the 32 bit O/S , its physically impossible for it to utilise 4 gb , its NOT a limit imposed by microsoft.

it refers to the OS having 5GB of ram if you have a 4GB installed and 1GB onboard your GPU?? Its wrong , moreover the only time an os will use 1 gb of physical memory for the GPU is if this GPU is "onboard" (built into the mobo) and its using "shared ram"

In one or two rare cases, a developer may take advantage of PAE technology to get around the usual Windows limits. For example, reader Alan Gorski reports that when he increased a computer to 8GB, the program AutoCAD was able to open large drawing files without generating the "out of memory" errors he previously had seen. As Gorski notes, "AutoCAD has long used special memory management techniques since the DOS days to maximize use of available RAM."

^^^^ That is simply impossible , windows will simply be using the pagefile , 32 bit windows cannot utilise more than 4gb of ram however you tweak it ;)


By definition, a 32-bit processor uses 32 bits to refer to the location of each byte of memory. 2^32 = 4.2 billion, which means a memory address that's 32 bits long can only refer to 4.2 billion unique locations (i.e. 4 GB).
 

My Computer

System One

  • Manufacturer/Model
    Home Built
    CPU
    AMD Athlon X2 64 3800+
    Motherboard
    Asus A8N32SLI Deluxe
    Memory
    4096MB
    Graphics card(s)
    nVidia 7600GT x 2
    Hard Drives
    2 x 300GB Ultra SCSI III, 2 x 250GB SATA, 1 x 1TB eSata
    PSU
    Antec 700w
    Mouse
    Razer Lachesis
    Keyboard
    Saitek
    Internet Speed
    6Mbps
Very few applications use PAE. So does it really matter? You need to use physical memory to map paging memory. You will find you run out of physical memory long before you use up a large paging file on most applications.
 

My Computer

System One

  • CPU
    pair of Intel E5430 quad core 2.66 GHz Xeons
    Motherboard
    Supermicro X7DWA-N server board
    Memory
    16GB DDR667
    Graphics card(s)
    eVGA 8800 GTS 640 MB video card
    Hard Drives
    SAS RAID
Regarding PAE –

In order to get around the 4GB limit in a 32 bit OS, there is a functionality called “Physical Address Extensions”. Among other things, this allows an added table the OS can use to add the “same” address in more than one place. Think of this as adding a "street name" to your "address". 1234567890 on table A is not the same as 1234567890 on table B. The limitation is that this *must* be provided for in your programs and drivers in order to work. If your mailman only looks at the '1234567890' but never looks at the street name, then he can and will sometimes deliver a letter to the wrong place. The same thing is true of PAE - If/when then individual program haven’t been coded to look in multiple tables for the needed memory locations in addition to the numerical addresses, messages can and will often go to the wrong place. In Windows, this is a called a “memory access violation”, and results in a blue screen. Additionally, individual programs under PAE can still only use up to 4 GB. Kernels and drivers can be made aware of PAE, but they can still only use 4 GB ranges at a time.

In short: PAE is not that great. In a server environment the number/version/type of programs and drivers can be tightly controlled, as well as how and where these processes are allowed to run. So this works and therefore this functionality is available on server versions of 32 bit Windows (NT, 2003, 2006, etc). In a consumer environment, this is not true at all.


Bottom line for ‘regular’ users: If you want to use 4 GB of RAM or more, then you should buy 64-bit hardware and use a 64-bit OS.
 

My Computer

System One

  • Manufacturer/Model
    Proudly Built by Me!
    CPU
    Intel Q6600
    Motherboard
    DFI UT LP P35 T2R
    Memory
    8GB OCZ Reaper DDR2 800 C44GK 4-4-4-12 2T
    Graphics card(s)
    Sapphire Radeon 4870x2
    Sound Card
    AuzenTech Prelude 7.1
    Monitor(s) Displays
    1 Acer P243 24" and 1 Samsung T260 26" Monitor/HDTV
    Screen Resolution
    Both are running at 19x12
    Hard Drives
    Seagate 1TB 7200.11 (Vista x64) Seagate 500GB 7200.11 (Win 7 x64)
    PSU
    OCZ GameXtream 900w
    Other Info
    FSB at 400 (1600) Mhz, CPU Multi @ 8 for 3.2Ghz
That was a long way of saying use x64.
 

My Computer

System One

  • CPU
    pair of Intel E5430 quad core 2.66 GHz Xeons
    Motherboard
    Supermicro X7DWA-N server board
    Memory
    16GB DDR667
    Graphics card(s)
    eVGA 8800 GTS 640 MB video card
    Hard Drives
    SAS RAID
From reading about PAE a while back it's software dependent. Not all software takes advantage of this however. I have tried /PAE on XP x32 and didn't really see a significant difference in speed and XP didn't show an increase in memory size either. According to MS 32bit OS can recognize 4gb RAM max.
 

My Computer

Back
Top