How much memory does Win7 32bits REALLY supports?

SeF

Distinguished
Jun 3, 2010
72
0
18,630
Some places I read 4GB, others 3.25GB and others 3GB.

I'm using Win7 64bits and I've realized that about 70% of the softwares/games actually is running using WoW64 emulation. Does the perfomance from these applications gets worse or better when 'emulated'?
I will need to format and reinstall my system and I'm thinking about changing to 32bits.

My system is a i5 750 + 4GB DDR3 RAM.

Win7 32bits uses 1GB from the total of my RAM
Win7 64bits uses 2GB from the total of my RAM
Source: http://www.microsoft.com/windows/windows-7/get/system-requirements.aspx
Is this correct?
 
Solution
There is little/no difference in performance with running apps under WoW64. Indeed, there isn't even "emulation" required unless your computer is running an Itanium processor.

Why is this so, Scott?? I thought WoW64 was an emulation layer?

The answer to that is both Yes, and No. Let me explain: On a system with an x64 processor - (which we all know contains the full x86 instruction set, plus extensions to make it 64 bit) - it matters not at all to the processor whether the code it's running is was written as 32 or 64 bit. It's all the same instruction set on the processor. So when your CPU runs the binaries, it doesn't know or care.

*IF* you have an Itanium based system, then an actual emulation layer is...

jefe323

Distinguished
Feb 14, 2010
1,471
0
19,460
windows will use about .5 GBs of RAM, so you will have 3.3 to 3.5 GB of usable ram (without taking into account your VRAM). If you have a GPU with 1GB of VRAM, then you will have about 2.5 GB of usable RAM.

Since you have 4GB of RAM, you won't really run into any problems going down to a 32 bit OS.

64 bit does use more ram, but it is a negligable amount (like 50-100 MB, not 1 GB)
 
The link you put in shows the recommended system specs, not actually how much RAM the OS will use.

If you have no issues with 64 bit installation right now, you can reinstall 64 bit with no worries, you will have more access to your RAM, although not by much. The programs will not really be slower running in that.

A 32bit OS, depending on the motherboard will see and use about 3.5-3.8 gig for applications and itself. Since you are at 4, you may see a few more 100MB free, not really enough for much.

However, if you plan to upgrade RAM in the future, you may as well install the 64 bit.
 

SeF

Distinguished
Jun 3, 2010
72
0
18,630


My motherboard is a Asus P7P55D PRO (I believe that it supports 4GB using a 32bit-based OS) and I don't plan putting extra RAM too soon (1~2 years).

If WOW64's applications don't run slower, I believe there is no reason to stick with 32bits. There is a very few softwares that run faster in a 64bit that I know...
 
There is little/no difference in performance with running apps under WoW64. Indeed, there isn't even "emulation" required unless your computer is running an Itanium processor.

Why is this so, Scott?? I thought WoW64 was an emulation layer?

The answer to that is both Yes, and No. Let me explain: On a system with an x64 processor - (which we all know contains the full x86 instruction set, plus extensions to make it 64 bit) - it matters not at all to the processor whether the code it's running is was written as 32 or 64 bit. It's all the same instruction set on the processor. So when your CPU runs the binaries, it doesn't know or care.

*IF* you have an Itanium based system, then an actual emulation layer is required because IA64 instructions are completely different from x64. So x64 has to be translated into IA64 before the processor can execute any code.

The key takeaway being that an x64 processor needs nothing special to run x86 or x64 binaries. For this situation, WoW64 really only has the infrastructure an emulator could use, but does not include a software emulator because it's not needed. Windows for Itanium does have an actual software emulator.

That takes care of the processor side.

It's different, of course, on an Operating System level. So what Microsoft do is include the complete set of x86 DLL's (libraries) as part of their x64 operating systems. For the most part, these DLLs are *exactly* the same as the ones found in 32 bit windows. This does require a certain amount of jiggery~pokery for a small subset of libraries which have to share memory space or otherwise directly access components which "must" run natively in 64 bits. So for these, Microsoft wrote their own calling sequences which allow the OS to extend the calls to a 'native' 64 bit one. From there, the OS can play Traffic Cop and route 32 bit to 32 bit, and 64 to 64.

Basically, what it all means is that 64 bit Windows has 32 bit Windows inside.




Source: http://msdn.microsoft.com/en-us/library/aa384274(v=VS.85).aspx

The WOW64 emulator runs in user mode. It provides an interface between the 32-bit version of Ntdll.dll and the kernel of the processor, and it intercepts kernel calls. The WOW64 emulator consists of the following DLLs:

•Wow64.dll provides the core emulation infrastructure and the thunks for the Ntoskrnl.exe entry-point functions.
•Wow64Win.dll provides thunks for the Win32k.sys entry-point functions.
•Wow64Cpu.dll is an interface library that abstracts characteristics of the host processor.
•(Intel Itanium only) IA32Exec.bin contains the x86 software emulator.
•(Intel Itanium only) Wowia32x.dll provides the interface between IA32Exec.bin and WOW64.
These DLLs, along with the 64-bit version of Ntdll.dll, are the only 64-bit binaries that can be loaded into a 32-bit process.

At startup, Wow64.dll loads the x86 version of Ntdll.dll and runs its initialization code, which loads all necessary 32-bit DLLs. Almost all 32-bit DLLs are unmodified copies of 32-bit Windows binaries. However, some of these DLLs are written to behave differently on WOW64 than they do on 32-bit Windows, usually because they share memory with 64-bit system components. All user-mode address space above the 32-bit limit is reserved by the system. For more information, see Performance and Memory Consumption under WOW64.

Instead of using the x86 system-service call sequence, 32-bit binaries that make system calls are rebuilt to use a custom calling sequence. This calling sequence is inexpensive for WOW64 to intercept because it remains entirely in user mode. When the custom calling sequence is detected, the WOW64 CPU transitions back to native 64-bit mode and calls into Wow64.dll. Thunking is done in user mode to reduce the impact on the 64-bit kernel and to reduce the risk of a bug in the thunk that might cause a kernel-mode crash, data corruption, or a security hole. The thunks extract arguments from the 32-bit stack, extend them to 64 bits, then make the native system call.
 
Solution

SeF

Distinguished
Jun 3, 2010
72
0
18,630

Nice explication! Was very helpful! :sarcastic:
Yes, I see no reason why stick with 32bit OS in a mid/high-end today.