The Switch to 64 Bit

A very good article posted by Scott Byer reminded me I wanted to say something about this.

There’s this perception that 64 bit is better than 32 bit, the way 32 bit was better than 16 bit, and that it’s just a natural transition the software industry will have to make.

But there are some big differences in this transition compared to the last one.

Most significantly, 16-to-32 solved a problem.  In the 16 bit days, pointers were 16 bits.  You could basically combine two pointers to access 32 bits of memory, but it was awkward, and inefficient.

16 bit software could be *faster* than 32 bit software, since it generally had greater locality and the code was smaller, but the extra work required to handle the base pointers and offsets was making developing software more difficult than it needed to be.  If a single piece of data, say an image, was more than 64k in size, you had to jump through hoops to access it.  No fun.

So the 16 bit to 32 bit transition happened.  It was painful – everyone had to buy new applications, APIs had to be updated, and so on, but it was a good thing for the industry.

Fast forward to today.  Do any of the 16 bit problems apply?

Only if you need to work with more than about 3 gig worth of data at once.

I’m not talking about something like video, where you can process hundreds of gigabytes of data by streaming it through the software and don’t really need all of it at once.  How many applications have you run where having only 2 or 3 gigabytes of RAM was a problem?

Because that’s where we are today.  32 bit software works fine, except in special circumstances like large servers or scientific applications where the larger address space makes a big difference.

Migrating to 64 bit Windows means you need new drivers for all your hardware.  That’s how Microsoft implemented it – they’re taking advantage of the transition to make some changes to the driver model.  That’s fine for servers, where you have a lot of control over what hardware to use, but how do you know the next printer you buy will have a 64 bit driver available?

Windows 64 bit does some funky things to maintain compatibility, that just seem like a ridiculous amount of added complexity to me.  Two “Program Files” directories, for example, one 32 bit and one 64 bit.  And when you request a COM object, some games get played behind the scenes to figure out if you need a 32 bit or 64 bit object, and look up the same GUID in one of two different places (the 32 bit or 64 bit section of the COM registry).  How messy do you think this will get over the next few years?

All the computers I use are 64 bit, and all of the operating systems I’ve installed are 32 bit.  I don’t see that changing any time soon.