The 64-bit revolution


Basically, wtf happened here? It’s 2012 and I’m chastised (a bit) on Twitter for installing 64-bit Ubuntu on my 64-bit laptop.

It’s 1993 and as a graduate student in the Computer Lab I get an account on the shared Unix server. A DEC Alpha, running OSF/1. The Alpha was a true 64-bit chip, no 32-bit heritage in its history, no 32-bit mode, and basically no 32-bit arithmetic instructions. Everything was 64-bit, no hostages. As a C programmer this is quite funny. int was still 32-bit (with the usual compiler flags). It was clear that the Alpha with its elegant, very RISC, instruction set was an example a new breed of processor architecture.

In 1994 I started my first job and in the next few years I use and program a variety of 64-bit architectures. The Alpha, UltraSPARC, 64-bit MIPS; I read up on various others (HP PA-RISC 2.0, POWER/PowerPC), because it was clear that the future was one where everyone had a 64-bit RISC workstation on their desk. Unix was clearly the only operating system with a chance of running on 64-bit architectures; sure, I saw, and used briefly, Windows NT running on Alpha, but it was a sorry effort. A 32-bit port of NT onto a 64-bit architecture. Microsoft/Intel were barely making it on 32-bit architectures, never mind 64-bit.

When Intel’s IA-64 architecture came out, I read the manuals. It was clear that: a) Intel hadn’t been paying attention; and, b) no-one would be able to write a decent C compiler for this architecture.

What happens next? I really don’t know. Sun got sucked into Java and took their eye off the ball, every other manufacturer canned their 64-bit line or sold to someone who didn’t care, Intel’s efforts to actually implement their IA-64 architecture (Itanium) were indeed a massive failure, and Intel had to piss away the R&D for 2 or 3 entire generations of CPU design. The amazing thing is that even though Intel basically failed to innovate for like a decade (between Pentium Pro and Core) everyone worshipped them and gave Intel enough time (aka money) to steal their new 64-bit strategy from their competitor AMD. They had the DEC designers, and the fabs, and they eventually produced Core, which was actually pretty good from a hardware perspective. But still based on the awful Intel software architecture.

Which is where we are now.

Does anyone have any idea why all the very sensible and nice 64-bit architectures (SPARC, Alpa, MIPS, PowerPC, not PA-RISC) all failed basically together?


10 Responses to “The 64-bit revolution”

  1. Nick Barnes Says:

    Price, and software. Windows NT was good enough, and Pentium Pro was fast enough, and the RISC alternatives were too expensive, and Intel was able to outspend their competitors by a country mile. The hardware design effort that went into making IA-32 go faster after about 1990 (when it had obviously run out of steam and was obviously going to be destroyed by RISC) was just spectacular.

    There was also a remarkable marketing bluff: Itanium was just around the corner (for nearly a decade), constantly being trumpeted by transparent puff pieces (I remember Gartner being particular offenders here), so big-iron buyers were seriously put off non-Intel architectures, and the other system vendors were dropping chip investment and looking at porting to Itanium because *obviously* their chip guys weren’t going to be able to keep up. This graphic is great:

    The big picture being drawn there was along the lines of ‘you think RISC is the next big thing? Huh, RISC is old news, VLIW is where it’s at!’

    The 64-bit story is just a piece of this bigger story (of IA-32 versus the world).

    For more clues, look at the choices Apple made, and then look at the huge and growing success of the ARM architecture.

  2. Clive Says:

    First, in response to the tweet: 64-bit is useful even without >4Gbytes RAM, if you want to mmap huge files and/or run massively multithreaded applications. (Having lots of thread stacks can deplete virtual address space with alarming rapidity on a 32-bit architecture.)

    If there is any unifying reason why all the sensible and nice 64-bit RISC architectures died out, it’s because making a world-class CPU has become such an expensive, R&D-intensive activity, just like making a world-class video game involves far more resources now than it did a decade ago. Bigger things take more implementation.

    Say there’s a 20% benefit to be got from RISC instead of CISC. Say there’s a 20% benefit to be got from a fresh architecture instead of a legacy one. (Both those numbers are highly arbitrary ballpark figures.) For a shiny fresh RISC CPU to beat the latest Intel x86 offering, it has to have design resources and fab process at least 70% as good. Otherwise, the Intel CPU will still win. Just look at how much clout a modern Nehalem has: the ability to funnel data in and out and the ability to co-ordinate the many cores, are astounding compared with the competition (even if it will feel old-hat in five years’ time).

    Worse, in CPU design you have to move fast. Performance doubling every eighteen months is equivalent to 1% per week. Suppose you DO manage to beat Intel’s performance by 5%: a couple of months later, you have to do it again. Unless you sold as many CPUs as Intel did in those two months, you can’t afford to.

    Beyond that, Sparc wavered when Solaris x86 came out, and is surely dead now Oracle owns Sun. DEC died, talking Alpha with it. MIPS simply didn’t get as many design wins as ARM did. PowerPC failed because Apple only sold 5% as many desktop PCs as the x86 crowd. PA was stymied because they hitched their star to the collaborative effort with Intel Itanium (the idea was to have one microarchitecture with two instruction sets) and when Itanic sank so did they.

    Annoyingly, back when ARM was implementing 16-bit memory accesses back in 1995-ish, I was screaming at them (in my capacity as an employee) to leave some clear gaps in the instruction set for 64-bit loads and stores. No such luck. Now they need 64-bit very, very urgently and, though I’ve not seen their 64-bit extensions yet, I’m guessing they’ll be a cobbled mess.

    • mathew Says:

      On modern CPUs 64 bit is better for everything, not just huge files. See

      I run 64 bit on all my machines except one—my work laptop is stuck on 32 bit because of some crappy proprietary VPN software I need to use that I couldn’t persuade to work with 64 bit.

      PowerPC didn’t fail; the problem was that Apple’s sales volume wasn’t enough to make it worthwhile for IBM to build newer, faster PowerPC CPUs suitable for laptops. There are 4.25GHz POWER7 CPUs on sale, with 8 cores each of which handles 4 threads. The problem was, the G5 and subsequent chips weren’t suitable for laptops, and Apple mostly sells laptops.

      The PowerPC architecture was also the basis of the CPUs used in all three of the current generation of video game consoles. So that’s 200 million units right there.

  3. David Jones Says:

    On Intel, 64-bit has more registers. This alone is responsible for a 10 to 20% boost in performance for C programs compiled with GCC.

  4. mjb67 Says:

    Yar my results agree with you David, at work I get 12-15% improvement by recompiling C++ programs for x86-64 on both Mac OS X and Windows. My 32-bit programs were already compiled to use SSE maths rather than i387.

    • David Jones Says:

      Oh good. I should’ve said earlier that I got that little snippet about a 10 to 20% speed boost not from my own work, but from statements made by Apple at a Developer Tech Thingy (where they were previewing whichever version of OS X that introduced 64-bit intel support).

  5. rptb1 Says:

    Why is there a separate 64-bit Ubuntu that you have to *install*, is what I want to know.

    • drj11 Says:

      Indeed. The rant was long enough already.

      I guess the short version is “linux developers don’t use macs, so they don’t know what it means for everything to Just Work”.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: