Wednesday, November 20, 2013

Override the 4GB memory barrier on 32-bit Windows 8.1 systems

Turn on Physical Address Extension mode and unleash the full potential of your 32-bit RAM memory.

50490C_Comal_Chip_Left_FINAL_pins_trans.jpg
Although the 64-bit transition period has come and gone, there are a surprising number of active installations of the 32-bit Windows operating system, particularly in industrial or business environments. One plausible explanation is the fact that backwards compatibility with older 16-bit Windows code is not possible on 64-bit Windows. Virtual 8086 mode, which is what NT Virtual DOS Machine or NTVDM relies on, cannot be utilized when the CPU is in 64-bit long mode. To counter this limitation, 32-bit Windows is used instead of 64-bit Windows.
 
Initially, there wasn't much of a difference between the two architectures in real world usage situations. However, over time, the base amounts of memory starting at 8GB and above exceed the maximum addressable memory space on 32-bit Windows, which is set at a rather paltry 4GB. And that doesn't even take into consideration reserved memory overhead that comes into play when you max out the system memory, sometimes bringing usable memory down below 3GB.

Some operating systems like Linux implement a feature called Physical Address Extension or PAE mode, which switches to 36-bit memory addressing, allowing for access to a grand total of 64GB of main system memory, which is a massive improvement. Likewise, Microsoft has implemented PAE in the Windows kernel, albeit disabled by default and only accessible on server editions of Windows. To that end, a proper patch of the Windows kernel will be necessary on desktop editions in order to attain the same memory access benefit.
a_WindowsPAE_1.png
With only 3.5 GB out of 8 GB of main memory available, that's just a sheer waste of potential resources
Aside from some notable exceptions, which will be mentioned in a bit, enabling PAE in Windows is a rather painless exercise with no harmful side-effects. Although you can address up to 64GB of memory in PAE mode, each process is limited to 2GB of memory space per active process. For certain memory hungry applications, like Adobe Photoshop, you are still far better off using a 64-bit version of Windows instead. For this reason, I would consider PAE mode to be more of a Band-Aid than an actual long-term solution. Luckily, for a good portion of business applications, this shouldn't be a major concern.



Steps

Activating proper PAE mode on Windows 8.1 is a fairly easy process. However, before you begin the procedure, be sure that no RAM disk or memory optimizer drivers are active in order to prevent possible conflicts. You can re-enable them once you have successfully booted into PAE mode on Windows. For safety purposes and easy recovery, you will be creating a boot menu item so that you can go back and forth between PAE and non-PAE modes in case additional troubleshooting is necessary.

Here are the steps:
  1. Download the PAE Windows kernel patch from Wen Jia Liu's personal webpage.
  2. Enter the Desktop tile from the Start screen and open the downloaded zip file.
  3. Extract PatchPae2.exe to your System32 folder. The default location is C:\Windows\System32.
  4. Right-click on the Windows Start Button and click "Command Prompt (Admin)"
  5. Execute the following commands in sequence:
cd %SYSTEMROOT%\System32

PatchPae2.exe -type kernel -o ntoskrnx.exe ntoskrnl.exe

PatchPae2.exe -type loader -o winloadp.exe winload.exe

bcdedit /copy {current} /d "Windows 8.1 (PAE Patched)"
b_CMD.PNG
Windows generates a unique boot ID, referencing the PAE option.
At this juncture, you will see a message stating the entry was successfully copied. Write down the long string of letters and numbers surrounded by braces, representing the boot ID, since you will need to use it for the next few commands:

bcdedit /set {PASTE BOOT ID HERE} kernel ntoskrnx.exe

bcdedit /set {PASTE BOOT ID HERE} path \Windows\System32\winloadp.exe

bcdedit /set {PASTE BOOT ID HERE} nointegritychecks 1

bcdedit /set {bootmgr} default {PASTE BOOT ID HERE}

bcdedit /set {bootmgr} timeout 5
 
Once all the commands are processed, you will need to reboot your system for changes to take effect. When you reboot, you will be presented with a Windows boot manager screen. The time out is set to five seconds, but you can change this if you wish using the following command, replacing the X with the desired number of seconds for the timeout, a 0 to boot immediately to the default entry, or a -1 to make the timeout indefinite.

bcdedit /set {bootmgr} timeout X
c_WindowsPAE_2.png
When Microsoft pushes updates to Windows 8.1, it can sometimes include updates to the kernel itself. If this ever happens, simply run the following command to refresh the PAE kernel.

PatchPae2.exe -type kernel -o ntoskrnx.exe ntoskrnl.exe
And finally, if you wish to return Windows back to its former non-PAE enabled state, you may do so by performing the following tasks:
  1. Delete the boot entry for "Windows 8.1 (PAE Patched)" via msconfig.
  2. Delete the files ntoskrnx.exe and winloadp.exe from System32.
d_WindowsPAE_3.png
Ahh! Much better!

Caveats

With all this in mind, it's important to note that certain hardware drivers might not work correctly in PAE mode. Intel HD series graphics starting at around Sandy Bridge will experience video buffer corruption issues, since the drivers written for 32-bit Windows 8.1 do not take the extended memory addressing that is present in PAE mode into account. The only known workaround at this time is to force install the Windows XP 32-bit version of the Intel HD display driver.

Bottom line

Depending on your needs, this workaround works rather well for the most part, with the only major drawbacks being an uglier desktop with no Aero Glass transparency in the user interface. The reason for this is the fact that the driver is not written to follow the latest WDDM framework. Another major sticking point is that switchable GPU graphics like Nvidia Optimus are rendered useless when the host integrated GPU isn't running the correct drivers. This could very well be a make it or break it situation, especially if you have a work laptop that works in graphics heavy applications like AutoCAD. Dedicated, non-switchable graphics solutions from vendors like Nvidia and AMD are unaffected by the PAE limitation.

All that said, this PAE guide may still serve as a blessing for anyone clinging to legacy software, but might want to make the best use of all their system memory at the same time. Although 32-bit native Windows might not be around forever, there's still some life left in the flagging platform and you won't have to jump ship to 64-bit for the foreseeable future.

0 comments:

Post a Comment

Appreciate your concern ...