Ask Knezev: Finally upgrading my PC - should I go 32- or 64- bit?

Ask Knezev is a new feature of Knezev and is all about your questions and my community answers. Every now and then, I'll dig into my bag of questions, answer a few based on our own know-how, and then I'll turn to the community for your take. To submit your own question, please email questions@knezev.com.

Last week I had a high school student doing work experience within my department (Information Services)  and one of his questions for me was "I want to upgrade my PC to Windows 7 from Windows XP, should I go with the 32-bit or 64-bit version of the Windows 7?".

My short answer was 64-bit.

My long answer was 64-bit. Before explaining why, it is really important to be aware of the fact that any 16-bit Windows applications or DOS applications will no longer work on a 64-bit architecture so you'll have to either stick with 32-bit Windows, or run those applications in a virtual environment (or, for DOS programs, an environment such as DOSBox) if you have any. 64-bit Windows only supports 64-bit and 32-bit applications.

In practice, the only advantage of using 64-bit Windows is that you can install more physical memory. 32-bit versions of desktop Windows are limited to 4GiB of physical memory, and thanks to dubious compatibility restrictions, they can't even offer that much. Every byte of memory in a system has a physical address, a number representing that byte of memory, and on 32-bit desktop Windows, those addresses are only 32 bits long (or rather, the addresses are between 36 and 64 bits long depending on which bit of software is manipulating them, but only 32 bits are actually used by Windows). This should allow 232 addresses, and hence 232 bytes—4GiB—of memory.

But unfortunately, physical memory isn't the only thing using that address range. Peripherals such as video cards also carve out chunks of the address range, so that the CPU can communicate directly with them. Video cards in particular will often attempt to place all of their video memory—hundreds of megabytes, sometimes even gigabytes—within this range. When this happens, the physical memory loses out, and has to be relocated; it is given addresses that require the use of the full 64 bits. Since Windows only uses 32-bit physical addresses, that means that you lose access to some of your RAM.

It wasn't always this way; Windows 2000 and the Windows XP with no service packs installed both set the limit simply to 4GiB total memory, and will use full 64-bit addresses if necessary. Unfortunately, some hardware vendors (notably NVIDIA, though others are also claimed to be responsible) had bugs in their drivers, such that they assumed physical addresses would never use more than 32 bits. When used in a system that required full 64-bit addressing, the drivers would end up corrupting memory and crashing. Rather than forcing hardware vendors to fix their broken software, Microsoft restricted 32-bit desktop Windows to 32-bit addressing (though server versions, with drivers that were in theory server-grade, were never subject to this restriction).


The result is, if you take a look at the memory graph in Windows 7's Resource Monitor on a 32-bit machine, you'll see a big old chunk of grey, denoting "hardware reserved" memory. That represents physical addresses that have been given up to add-in cards, and hence "lost" physical memory.


The 64-bit version has no such restriction. The ability to use memory up to 4GiB—and beyond—remains 64 bit Windows' most compelling feature; it's the one you're most likely to notice day-to-day. It's perhaps a little ironic that this advantage has nothing to do with being 64-bit as such—the 32-bit server versions of Windows can already access all this memory—it's just that 64-bit Windows forces developers to fix the bugs that plagued 32-bit Windows. 64-bit Home Basic raises the limit to 8GiB, Home Premium to 16GiB, and Professional, Enterprise, and Ultimate all take it up to 192GiB. Your motherboard and wallet alike are unlikely to support so much memory.

There are a few other benefits, however, that are genuinely a result of using 64-bit software. Unfortunately, they tend to be less noticeable. Because of architectural improvements made when x86 grew 32 to 64 bits, 64-bit software will typically run faster than 32-bit programs. Each program now gets a much larger address space, 4096 times larger than 32-bit programs can use. The other benefit—and again, it's slim—is that 64-bit programs should be a little more secure. One of the security measures included in Windows Vista and Windows 7 is Address Space Layout Randomization, ASLR. This advantage will be most significant on software that is subject to substantial attacks—Web browsers, e-mail clients, Office, Adobe Reader, and Flash being the obvious targets.

So all in all, the advantages of going for 64-bit aren't big, in general, but they're there. Most new systems will run up against the physical memory limits of 32-bit Windows, making the 64-bit version the natural choice. 32-bit software had a long reign at the top, but its time is past. Windows Server 2008 R2 is already 64-bit-only, and while Windows 8 will almost certainly be available in a 32-bit version, Windows 9 probably won't be. Might as well make the jump now.

No comments:

Post a Comment