Ask Ars was one of the first features of the newly born Ars Technica back in 1998. And now, as then, it's all about your questions and our community's answers. Each week, we'll dig into our bag of questions, answer a few based on our own know-how, and then we'll turn to the community for your take. To submit your own question, see our helpful tips page.

Question: I'm finally ready to drop Windows XP and move to Windows 7. Should I go with the 32-bit or 64-bit version of the operating system?

Short answer: 64-bit.

Long answer: 64-bit, but you may not see much real difference. Before explaining why, there is an important contraindication to be aware of: if you use any 16-bit Windows applications or DOS applications, you'll have to either stick with 32-bit Windows, or run those applications in a virtual machine (or, for DOS programs, an environment such as DOSBox). 64-bit Windows supports 64-bit and 32-bit applications, but 16-bit ones are consigned to the trash can of history.

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. This will make little difference to typical desktop applications, but for certain kinds of software, particularly number-crunching applications, the speed improvement can be valuable.

Another potential benefit—critically important to few, but essentially irrelevant to most—is that each program gets a much larger address space. On 32-bit Windows, in normal configurations, each program only has a usable address space of about 2GiB, half of the total memory that can be addressed with 32-bit addresses. This means that the amount of RAM that the program can manipulate directly is limited to 2GiB. If the program needs to work on a larger chunk of data, it has to move that data in and out of RAM a piece at a time, usually storing it on disk when it's not in RAM. This 2GiB limit is regardless of the amount of physical memory installed; if you run multiple programs, they each get a 2GiB block of their own, so they can use many gigabytes in total, but any individual program can't readily break through this limit.

Not so with 64-bit programs; 64-bit programs get 64-bit addresses, giving an address space of more than 18 billion gigabytes, of which they can theoretically use half. This limit is "theoretical" because neither current 64-bit x86 processors nor Windows support quite that much. The actual limit in theory is a mere 8TiB, but this is still 4096 times more than 32-bit programs can use.

As with the performance issue, this is of limited importance. Some applications—image editing, databases, and even large spreadsheets—can yield considerable benefits from a 64-bit address space. Many others—e-mail, Web browsers, media players—gain little or nothing from the increase. In truth, if you're running the kind of program that benefits from 64-bit address spaces, you've probably already made the switch.

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. ASLR puts system libraries and certain other information at random memory locations, which makes it harder to exploit certain kinds of security flaws. Malicious code can, however, use various techniques to try to work around ASLR. One of these involves filling up a process's address space with specially crafted data, such that if a memory address is chosen at random, it will most likely refer to the specially crafted data. This kind of attack relies, in part, on the fact that a 32-bit process has only a relatively small address space: filling almost all of it is feasible. No such luck in a 64-bit process—it's simply far too big to fill in this way.

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. Unfortunately, not all of these are available in 64-bit versions, limiting the efficacy of this protection. Office 2010 includes full 64-bit support, though using the 64-bit version means forfeiting compatibility with most add-ons and extensions. Internet Explorer has a 64-bit version available, but it's hobbled relative to its 32-bit counterpart; the high-performance JavaScript engine found in Internet Explorer 9 is only available for the 32-bit version. 64-bit versions of Chrome and Firefox are experimental and non-standard. Adobe currently has a beta version of 64-bit Flash, but is unlikely to have a stable version until Flash 11 ships. Adobe Reader is 32-bit. All in all, it's rather disappointing; although in the long run the situation is sure to improve, this (slight) security advantage is at the moment of limited utility.

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.