Large Address AwarenessRemember that the 2GB limit on 32-bit applications is a limitation imposed by the operating system. This wasn't arbitrarily chosen, it's a restriction that ensures no matter how much memory an application needs, there will still be memory for the operating system itself. On 32-bit Windows 4GB is the entire addressable space, and the operating system needs to fit within this as well as address hardware and provide for applications.
But on 64-bit Windows the operating system doesn't need to squeeze into the lower 4GB, meaning more addressable space can be freed up for programs. And, although it may have a negative impact on the operating system, you can even tell 32-bit Windows to give a little more back to the programs and divide memory into a 3/1 split, giving 1GB to the operating system and 3GB to programs.
The only requirement is that these programs are linked at compilation time to be large address aware. Since you or I don't have access to the source code, we can't re-link programs to use a larger address space. Fortunately, you don't have to, as some basic tools will alter the headers on them for you.
Using large address awareness, the breakdown looks like this for addressable space per program:
32-bit application on 32-bit Windows: 3GB
32-bit application on 64-bit Windows: 4GB
64-bit application on 64-bit Windows: 8TB
As you can see there's a doubling of the range even for 32-bit applications on a 64-bit system, but if it's not already clear the best scenario is to run 64-bit applications on a 64-bit operating system. You don't have to tweak anything here, as the 8TB limit for 64-bit applications is quite spacious, at least for now.
Expanding the addressable spaceThe procedure for altering the headers of a program is pretty simple, but note one big caveat: not all programs will be happy with this, because they simply weren't designed for it, and may crash and burn horribly.
First grab one of the many tailored scripts (search on 'large address aware' and game title) for Flight Simulator, STALKER, Supreme Commander or Fallout 3. You can get the Fallout 3 one for example from here.
If you're applying this to Fallout 3, following the instructions and running the batch file is all you need to do. But the batch file only scripts the utilities bundled in the archive - you can use them for any program, game, productivity application or otherwise. There's actually only two you need to use, dumpbin.exe and editbin.exe. To add the large address aware header to a program open up a command prompt and run:
editbin /LARGEADDRESSAWARE [application]
To remove it:
editbin /LARGEADDRESSAWARE:no [application]
To see if if a program is enabled run:
dumpbin /headers [application]
and look for 'Application can handle large (>2GB) addresses' at the top of the output.
Why would you want to remove it? For one if it doesn't work well, and secondly to restore an EXE back to its original state, which game patches may require before they'll update it. In fact, note that some games may not let you do this at all, thanks to DRM (Digital Restrictions Management) schemes, especially Starforce, as these detect if an executable is modified.
If you're running 64-bit Windows, you don't need to do anything else. If you're running 32-bit Windows XP or Vista, there's one more step you need to do. For Windows XP: click My Computer > Properties > Advanced > Startup and Recovery, then click on Settings. Next click Edit to edit the BOOT.INI, and append:
/3GB /userva=2900
This enables what Microsoft calls [i]4GT RAM Tuning[/i]. The 'userva' option allows you to tailor how much extra addressable space is used instead of the default 3072 (3GB). You can try without it, but some reports suggest Windows XP and its drivers (presumably, and especially with large-VRAM graphics cards using up addressable space) giving XP more than 1GB. Certainly this will be the case if you're packing SLIed 512M or more cards.
For Vista simply open a command prompt and run: bcdedit /set IncreaseUserVa 3072
Using large address awareness will allow you to use more of your memory for those programs that could make use of it, but on the whole even including such demanding programs you would need to be using content creation programs editing very large files to make use of any more than a few gigs of memory on a home machine. For most users, including gamers, money spent on extra memory could probably be better spent elsewhere.
Issue: 133 | February, 2012