Ask Ars: Finally upgrading to Windows 7—should I go 32- or 64-bit?

Finally getting around to upgrading to Windows 7 from XP or Vista and …

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.

231 Reader Comments

And FYI: The ~3GB limit is not due to "dubious compatibility restrictions." It's due to the fact that PC's use memory-mapped IO for the video card and some other devices. That 256 or 512MB of video memory has to get mapped in to the same 32-bit address space as user RAM, and things like hard drive controllers also can use memory mapping to speed up I/O.

Is there a reason Home Basic & Home Premium have different max memory (8GiB vs 16GiB) other than MS marketeers doing some clever (not) market segmentation?

Thanks-FF

IIRC Setting the limit smaller lets MS statically allocate smaller control structures for the VM (I read that this is why the high end versions have their limits set where they are), but otherwise yeah it's all market segmenting.

The potential gotcha is that if w8 isn't until late 2012 a number of enthusiasts who only have home premium might find themselves bumping up against the 16Gb limit. My next box (LGA 2011 or Bulldozer) will have 16, and the long term trend for app bloat indicates I'll probably want more than that in a year and a half. I got a copy of w7-ultimate from a launch event so it's a non issue for me; but not everyone else will be as fortunate.

And FYI: The ~3GB limit is not due to "dubious compatibility restrictions." It's due to the fact that PC's use memory-mapped IO for the video card and some other devices. That 256 or 512MB of video memory has to get mapped in to the same 32-bit address space as user RAM, and things like hard drive controllers also can use memory mapping to speed up I/O.

It is entirely due to compatibility restrictions. There's no such limit on Windows 2000 or Windows XP RTM; both of those operating systems will use up to the full licensed limit (so 4 GiB for desktop versions of the operating system) even if that means using physical addresses above the 4 GiB limit.

If we were talking the early days of Windows Vista, then yes, drivers would be a legitimate concern. But since both Windows Vista and Windows 7 WHQL requirements mandate both bitnesses of driver, driver issues are far behind us.

Ah yes, that "theory" thing again. Shame about practice.

Personally, I'd have to drop my digital camera, webcam and external DVD-RW. My sound card will work, with third party drivers.

If we were talking the early days of Windows Vista, then yes, drivers would be a legitimate concern. But since both Windows Vista and Windows 7 WHQL requirements mandate both bitnesses of driver, driver issues are far behind us.

Ah yes, that "theory" thing again. Shame about practice.

In practice, I've been running 64-bit Windows full-time on a range of different devices since 2006, and only one device (a USB WiFi dongle) didn't have a 64-bit driver for the duration. Even if acquired one at some point during Windows Vista's life.

If your hardware has no 64-bit driver, it must be either very old, in which case replace it, or very badly made, in which case replace it.

You were able to activate it under XP, but no more after XP SP2, why ?

"That 32-bit editions of Windows Vista are limited to 4GB is not because of any technical constraint on 32-bit operating systems. The 32-bit editions of Windows Vista all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code."http://www.geoffchappell.com/viewer.htm ... memory.htm

It is almost impossible to buy a PC running 32 bit Windows 7.HP sells no laptop with 32 bit available in the consumer space. (It does sel 32 Business laptops, which leads to point two)If you use software provided by your employer, check with them to be sure all their apps are 64 bit compatible.

I am reloading a lot of laptops with 32 bit Windows 7, the COA is fine either way.

Who, besides corporate customers, is adopting Windows 7 now when Windows 8 is on the horizon? If you waited a year and a half surely you have patience for another 8 months to get windows 8 and not have a $300 hole in your pocket.

Windows 8 is at least a year, if not a year-and-a-half, away and there are still very few details as to what benefits it will have over Windows 7. I would rather have people adopting Windows 7 (preferably 64-bit & IE 9 or another modern browser) now rather than have them continue to use Windows 2000/XP for the next 18 months, for obvious reasons.

Yes, IF there are 64-bit drivers for your hardware. Check. *Before* you start the install. (There probably are. But it's a PITA if you don't and you're wrong)

What archaic hardware do you have? Having ancient legacy hardware is a poor excuse for shooting Win 7 full of holes. Just like your OS, you should keep your hardware current. Like, within the last 5 years.

There's actually another consideration at play here. The 64-bit software is "fatter" than its 32-bit equivalent--both on-disk and in-memory--if for no better reason than every pointer instruction takes roughly twice the storage.

Not true. Pointers themselves will be larger but not every instruction that makes use of pointers... only the ones using absolute addressing and I doubt those are a high percentage of instructions issued by a compiler, probably very few of them are that, actually.

Quote:

Consider the size of your hard drive in addition to the RAM in the system before making your decision: Desktops can have oodles of both, but laptops tend to be constrained. I don't recommend running 64-bit on a laptop unless you've got >128GB disk and >3GB RAM.

Bad recommendations all the way around. Windows 7 64b runs fine in 1GB+ (first hand experience) (in fact, Vista's recommended system requirements are 2GB, Win7 is only 1GB). Storage requirements aren't that much more. My boot drive is a 60GB SSD on this 64b machine. It has all the OS and all applications that I have installed and I install everything as 64b when given the option (64b Office, full suite, development tools, VMWare, etc.). I still have 25GB free on it so only 35G used. All my regular data is on a standard HDD.

wasn't aware different Windows editions also placed restrictions on the amount of RAM supported.

Yeah that seems strange to me, 16GB seems like it'd be nice though triple digit options seem like they'd be excessive for now. Cool that it's possible.

WarmRegards wrote:

Who, besides corporate customers, is adopting Windows 7 now when Windows 8 is on the horizon? If you waited a year and a half surely you have patience for another 8 months to get windows 8 and not have a $300 hole in your pocket.

Now, yeah. I run 7 but I bought it awhile ago. Since I had a 64 bit processor I went with that version. Wasn't entirely aware of the advantages but I knew rendering software could run faster. I'm curious to see if 8 does anything major as 7 seems great for me.

I know that when AM64 came out the 64-bit instruction set could use more and larger CPU registers. I would think this would be quite an advantage for 64-bit over 32-bit. Did the 32-bit OS somehow get access to this register space?

Do 64-bit programs not take full advantage because they are essentially shadows of 32-bit programs?

What archaic hardware do you have? Having ancient legacy hardware is a poor excuse for shooting Win 7 full of holes. Just like your OS, you should keep your hardware current. Like, within the last 5 years.

Great, contact me off the board for my bank account details. Or produce the legislation requiring hardware over a certain age to be destroyed.

I'm certainly not "shooting Win 7 full of holes", some people may still be better off with the 32-bit version.

I know that when AM64 came out the 64-bit instruction set could use more and larger CPU registers. I would think this would be quite an advantage for 64-bit over 32-bit. Did the 32-bit OS somehow get access to this register space?

No.

Quote:

Do 64-bit programs not take full advantage because they are essentially shadows of 32-bit programs?

If we were talking the early days of Windows Vista, then yes, drivers would be a legitimate concern. But since both Windows Vista and Windows 7 WHQL requirements mandate both bitnesses of driver, driver issues are far behind us.

So obviously this issue is a concern for some (legit or not) and has traditionally been a sore point for 64bit in general. You may feel it is all solved, but are you writing the article for yourself?

Yes, IF there are 64-bit drivers for your hardware. Check. *Before* you start the install. (There probably are. But it's a PITA if you don't and you're wrong)

For Windows 7, 100% of all certified drivers, or any driver or device carrying a Window 7 logo, MUST be compatible with ALL versions of Windows, both 32 and 64bit, Starter to Pro.

Under XP, 64bit was a completely different kernel as well. XP 64 was a serevr system, XP 32 was TOTALLY different. Drives had to be especially WRITTEN for each. In 64bit Win 7, drivers are written once and COMPILED for each. Win 7 also can use 32 bit drivers and 64 bit drivers at the same time, provided they don;t directly conflict.

Can anyone explain why MS hasn't dropped 32-bit yet? I thought for sure Win7 would be 64-bit only, but no. And Win8 now has 32-bit speculation (?)

Inquiring minds want to know.

Backwards compatibility. There are literally billions and billions of dollars worth of ancient software sitting out there doing business critical things. Ditching 32b compatibility completely would mean massive amounts of work for thousands of businesses rewriting that. Or... what they'd most likely do is simply keep running the last version of the software that ran their critical software which would require any enterprise-concerned OS developer to continue support for those older systems for lots longer time anyway.

I was on Newegg last night about to pull the trigger on a copy of Win7 Home Premium + a new SSD.

I still have Vista-64 on a 300gb platter drive, and you know what? It still works. Any reason to drop ~$300 on the combo I described above?

Sounds like you already answered your own question. Vista was pretty crummy on release, but after SP1+ it was markedly better. And SSD's are still overpriced imo. Why pop $300 now when you could wait until Win8 comes out, and pop $300 for that + a bigger SSD then. Plus, MS noted that starting with Win7 they were optimizing the code base after the huge shuffle of Vista. I'd assume that Win8 would continue that trend and be even more optimized. Win7 is basically what Vista should have been. I'd just wait until Win8.

EDIT: Also, do you realize how many starving kids in Africa you could feed with $300? /unwarranted guilt-trip

"That 32-bit editions of Windows Vista are limited to 4GB is not because of any technical constraint on 32-bit operating systems. The 32-bit editions of Windows Vista all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code."http://www.geoffchappell.com/viewer.htm ... memory.htm

Thank You Microsoft !!!

The issue is not the 4 GiB limit. It is the physical address limit. Microsoft doesn't allow 32-bit desktop operating systems to use physical addresses higher than 0xffff'ffff due to driver breakage.

For Windows 7, 100% of all certified drivers, or any driver or device carrying a Window 7 logo, MUST be compatible with ALL versions of Windows, both 32 and 64bit, Starter to Pro.

Great, and even now a LOT of hardware doesn't carry the logo.

I'm aware of XP-64's failings (and have never recommended it, and I've been dubious about Vista too for that matter), I'd still recommend Windows 7 32-bit even if they have driver issues with 64-bit...

If we were talking the early days of Windows Vista, then yes, drivers would be a legitimate concern. But since both Windows Vista and Windows 7 WHQL requirements mandate both bitnesses of driver, driver issues are far behind us.

So obviously this issue is a concern for some (legit or not) and has traditionally been a sore point for 64bit in general. You may feel it is all solved, but are you writing the article for yourself?

And is the standard for info anecdotal experience?

Under XP and previous systems, the 64 and 32 bit editions were functionally different operating systems, based on differing kernels. 64bit XP actually used the server kernel, and thus needed special drivers written, not just compiled. in Win 7, the driver model is universal under a single kernel, it's only a matter of a few compiler switches between them. Also, 32bit drivers work fine in 64bit Win 7.

Legacy devices with no vista/7 support at all, that's a different story, but if you expected 7 year old drivers written for XP to work in 7 at all, let alone 64bit, you had a surprise most likely waiting for you.

If your hardware has no 64-bit driver, it must be either very old, in which case replace it, or very badly made, in which case replace it.

I have some niche palm devices with no 64-bit support. They're indeed old, but also built like tanks for warehouse-type duty. You could bounce one off a concrete floor with no ill effect. Win7-32 is a really nice alternative to spending thousands of dollars replacing perfectly functional hardware. Especially on a host machine that doesn't have enough RAM to exhaust a 32-bit address space.

If your hardware has no 64-bit driver, it must be either very old, in which case replace it, or very badly made, in which case replace it.

I have some niche palm devices with no 64-bit support. They're indeed old, but also built like tanks for warehouse-type duty. You could bounce one off a concrete floor with no ill effect. Win7-32 is a really nice alternative to spending thousands of dollars replacing perfectly functional hardware. Especially on a host machine that doesn't have enough RAM to exhaust a 32-bit address space.

IMO, I'd say keep one or two machines per-site that have to interface with those older devices as 32b. Everything else gets 64b.

Yes, IF there are 64-bit drivers for your hardware. Check. *Before* you start the install. (There probably are. But it's a PITA if you don't and you're wrong)

....yes. I think this article glossed over the pitfalls of 64-bit. Infact, they probably could have dedicated the article to that instead of the rather long winded approach of going "rah rah 64-bit". Transitions like this usually incur support issues as all 3rd party vendors might not be completely onboard.