Half of Windows 7 Machines Running 64-Bit Version
nk497 writes "Microsoft has said that nearly half of machines running Windows 7 are using the 64-bit version, up from just 11% of PCs running Vista. The 32-bit version is limited to 4GB RAM, while the 64-bit version allows 192GB, as well as added security and virtualization capabilities. While Microsoft is pushing 64-bit as a way to gain performance in the OS, it earlier this year advised users to install the 32-bit version of Office 2010, 'because currently many common add-ins for Office will not function in the 64-bit edition.'"
The reality is though that 10% of Windows systems are 64-bit (there's actually still more systems running Vista than Windows 7 out there, although the gap is shrinking). The vast majority of Windows desktops are still running the 32-bit version of Windows XP, and that's not going to change until businesses decide they have a compelling reason to upgrade.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." --Albert Einstein
We use the 32 bit at work for the compatability with old the old MS Access databases (don't ask... I just work here...)
I use the 64 bit at home - even though it causes some odd glitches with various games here and there, for the most part it runs everything much smoother. I decided that I'd need more than 4 Gigs of RAM to run Visual Studio to Debug my modified Source game.
PAE adds another layer to the page tables (as does 64-bit addressing), which makes TLB misses more expensive, so you don't want to enable it on systems that don't have more than 4GB of RAM. Given that very few machines ship with more than 4GB of RAM, but a 32-bit processor, it's likely that this would be a configuration that would get very little or no testing (especially from driver developers) so would be potentially very buggy.
A lot of PCI devices are 32-bit, so drivers need to use bounce buffers to do DMA transfers to physical memory over the 4GB line. This is something that device drivers designed for 32-bit systems won't do, because they can just pass 32-bit physical addresses straight to the device on the systems they were written for.
I am TheRaven on Soylent News
Compile time doesn't count.
Did you just say that we don't have 64-bit flash because Windows uses 32-bit IE because we don't have 64-bit flash?
Sometimes, life itself is sarcasm...
You try accessing more than 2GB of RAM (or 3GB of RAM with the /3GB switch in boot.ini) in a single process. What you end up having to do is (firstly) your own memory management (Which sucks) and having to manage multiple 2GB "windows" so if you want to read data you have to swap in an out of these "windows" to be able to read them as the kernel itself is only 32bit and can only directly address 4GB of RAM.
So you end up coding in what is known in Windows as "Addressable Window Extensions" and they are a pain in the arse. Doing this on SQL server and Oracle was basically a necessity, and when PAE was first thought of, this is exactly what was being thought about, database systems. They have been able to use PAE in VMware etc and other places as they give the upper and lower limits for memory address directly to the operating system (Windows, Linux whatever else is actually running in the VM) and then they address via the hypervisor that memory address space, meaning that the hypervisor doesn't have to do a lot of memory management (Certainly nothing like protected memory)
So in effect, the biggest reason for 32bit Windows 7 not supporting more than 4GB of RAM is because the kernel itself is a 32bit app and doesn't have the 64bit address space to directly address more than 4GB of RAM itself.
In the long term it's just too hard, and it's easier to code for 64bit than to deal with what are effectively kludges to make this work.
If you need to know more about this, I would suggest Mark Russinovich's Windows Internals book.
Curiosity was framed; ignorance killed the cat. -- Author unknown
18446000000 / 16GB = 1,152,875,000. Note at 400MHz(the minimum DDR3 speed) light travels about 1 meter per clock cycle. Such a memory array would be much larger than 1 cubic meter, making DDR latency numbers impossible to meet even with lightspeed interconnects.
Yes, IAAAD(I am an ASIC designer)