November 9, 2007
I've been wary of 64-bit on the desktop, as the benefits are usually outweighed by the compatibility problems. I agree that 64-bit operating systems are inevitable in the big scheme of things, but I've struggled to see the relevance of 64-bit for typical desktop and laptop users. It's a novelty, albeit a necessary one for particular niche applications. However, I'm now beginning to think we could see a fairly broad switch to 64-bit desktop operating systems over the next few years-- much sooner than I anticipated.
- 64-bit versions of popular consumer desktop operating systems are commonly available. Both Vista and OS X 10.5 fully support 64-bit apps out of the box, although evidently the OS X kernel is still 32-bit.
- Memory is cheap. Dirt cheap. As of this writing, you can buy 4 gigabytes of quality DDR2 memory for around $120. The memory industry has a nasty habit of switching to newer, faster, more expensive memory types over time, but it looks like this plateau might be here to stay. 4 GB of memory is no longer a rare extravagance for rich users; it's becoming commonplace, even mundane.
- The 32-bit x86 architecture doesn't scale very well beyond 2 gigabytes. If you install 4 gigabytes of memory, you may find yourself wondering -- Dude, Where's My 4 Gigabytes of RAM? Good luck explaining to the average user why their computer says they only have 3 GB of memory, even though they paid for 4. It's a tough sell. And honestly, who has time to listen to a bunch of arcane technical explanations for this bizarre limitation? People just want full use of the memory they paid for.
- Modern video cards do not play well with 32-bit memory limits. Newer operating systems emphasize the importance of good, discrete video hardware. To get the full suite of cool desktop effects, through Aero, Beryl, or Core Image, you need a decent midrange video card. I'd say the average amount of memory on a midrange video card today is 256 megabytes, and in the enthusiast class it's closer to 512 megabytes. I can easily see that doubling over the next two years. That's a massive chunk of the 32-bit address space carved out for required hardware. And if you're a hardcore gamer or multiple monitor enthusiast with more than one video card, it's worse. Much worse.
The switch to 64-bit is interesting because there's a certain air of finality to it. It may be the last bit transition in our lifetimes.
Sure, nobody will ever need more than 640 kilobytes of memory, but this is a whole new ballgame. To put the size of the 64-bit memory address space in context, here's a chart showing the respective sizes of each. Note that the scale is logarithmic.
The transition from 16 to 32 bit increased our address space by a factor of 65 thousand. That's big. We've been in the 32-bit era since about 1992; that address space has been good for about thirty years, give or take a few. The transition from 32 to 64 bit, whenever we finally make it, will increase our address space by a factor of four billion. Will there be a transition to 128-bit machines and operating systems? Absolutely. But I'm not sure it'll happen while we're still alive.
You certainly won't be upgrading to 64-bit applications for better performance. Or at least you shouldn't be, unless you enjoy disappointment. 64-bit offers compelling performance benefits on servers, but on desktops, it's a bit of a wash. On one hand, the x86 architecture simply works better in 64-bit mode:
The x86 instruction set was created in the 16-bit era and has accumulated quite a bit of cruft going from 16-bit to 32-bit. Some of that cruft was wisely abandoned during the transition from 32-bit to 64-bit. Applications compiled for x86_64 don't just get larger registers, they get more registers, plus a more modern calling convention and more addressing modes. Every 32-bit x86 application can benefit from these changes, it's just a question of how significant that benefit will be.
On the other hand, stuff is just plain larger in 64-bit land-- your pointers and data structures now take up twice as much room. That 2 megabytes of cache on your CPU won't be able to fit as many things in as it used to.
Once you factor in the pros and cons, you end up with a 64-bit machine that runs desktop applications a few percentage points faster than the 32-bit machine it replaced. There are some exceptions, of course-- most notably games and audio/video editing-- but on average, performance remains roughly the same for typical desktop applications. It's hard to find a definitive set of benchmarks that tell the entire 64-bit versus 32-bit performance story, but all the ones I've seen show rough parity.
I recently upgraded both my work and home machines to 4 GB of memory. Based on the positive Vista x64 experiences related by coworkers and Scott Hanselman, I took the plunge and upgraded to Vista x64. It was the only way to use anything close to the full 4 GB of memory. I resisted mightily, because I expected 64-bit driver and software problems, but much to my surprise, I've had none. Zero. Zilch. It's been unbelievably smooth. Perhaps it's because I waited a good six months after the initial release of Vista to move to x64, but everything "just works". All my hardware has 64-bit drivers. Many of my applications even come in x64 flavors, and the ones that don't still work flawlessly. I didn't change any of the hardware other than adding memory, but I'd swear my system is more responsive under x64 in daily use. And I no longer run into certain aggravating 32-bit operating system limits.
Of course, my original advice regarding 64-bit operating systems hasn't changed. Unless you have more than 2 GB of memory, there's no reason to bother with 64-bit. But have you priced memory recently? Now that 4 GB configurations are approaching mainstream, it's encouraging to know that 64-bit operating systems are out there, and that they work with a minimum of fuss. It's certainly taken long enough to tackle this problem. Hopefully we can stay with 64-bit for the forseeable future, and leave that pesky 128-bit problem for our kids to deal with.
Posted by Jeff Atwood
for sure we need 64 bit..
I recently switched to 64bit as well, and everything just worked...well everything but Autodesk Inventor 2008. I did it mainly for the 4GB limit, since Inventor loves to suck up memory. I am forced to use that program though, I am an engineering student at OSU. On Autodesk's website, they claim they support x64, but for me it kept crashing, and I even formatted twice. I was disappointed, there is one program that has to dictate which version of Windows I use. Their support was a joke too, they claimed my drivers were outdated.
Ehh I've been on 64-bit desktops at home and at work for more than half a year now. I don't know how many times I've run out of resources in 32-bit world -- literally, context menus would refuse to show, Internet Explorer wouldn't render, I'd have to reboot just to function. With a full 4GB of RAM I can use virtual machines *and develop in them*, with full-blown SQL Server, Visual Studio 2008, and more, all tucked into a nice little VMWare instance.
While it's great that computers are getting rediculously cheap ($200 for a Linux-installed Acer laptop now), I'm of the mindset that the budget for a professional software developer SHOULD NOT DECREASE over time, rather the power and productivity of the workstation should constantly increase.
You simply cannot increase productivity on a halfway decent workstation by sticking to the 32-bit routine. Using 32-bit Windows these days feels like Windows 95 felt when I switched to Windows NT 4. The 32-bit environment is unstable because, as I said, I'm constantly running out of resources. Besides the fact that I have a lot of essential "trash and trinkets" on my machine like SQL Prompt, WindowBlinds, daemon tools, etc., at the end of the day it usually takes me five minutes to close out of all the apps I had open as I was working with them all at the same time -- web browsers, multiple Visual Studio instances (different and isolated but cooperative or interoperating software projects), SQL Server Management Studio, MS Outlook, and more. Just imagining the installation of VMWare on top of all that on a 32-bit operating system makes me shudder.
I don't know how many times I've run out of resources in 32-bit
world -- literally, context menus would refuse to show,
Internet Explorer wouldn't render, I'd have to reboot just to function.
This is not a 32-bit vs 64-bit issue. You were just running out of
space on a table called The Desktop Heap, which you can tweak in
the registry. It's a fixed size table of handles in Windows
That's helpful, but I was aware of the difference between the desktop heap and RAM/bits.
The difference is that by default the Desktop Heap in Vista x86 is lower (shared heap size = 1024, interactive heap size = 3072, non-interactive heap size = 512) than in Vista x64 (shared heap = 1024, interactive heap size = 20480, and non-interactive heap size = 768).
So although tweakable, I'd say that that is most definitely an x86 vs x64 issue.