ARM and x86

  • Apple switched from IBM to Intel, not PPC to x86
  • Apple sells more ARM devices than x86 devices
  • ARM is open for licensing and Intel can become Apple’s ARM supplier.
  • OS X and iOS have no significant amount of machine code and thanks to OpenCL and Accelerate neither do third party apps.

In 2004, all processors sucked. Intel’s best pentium 4s as well as IBMs G5s used so much power and made so much heat that neither were suitable for legitimately portable laptops. Instead, Intel had to make low powered (and weak) centrino processors or risk losing the market to AMD (who already figured out how to make low powered x86 chips). Similarly, Apple had to stick with miniaturized G4s. Intel had a trick up its sleeve though, the Core processors. They benched slightly slower than Pentiums and G5s, but did it with way less power consumption. IBM had no such trick. A chip similar to the G5 is still used in the Xbox 360 and it took them until this year’s release of the Slim model that we finally have a chip that maybe could’ve worked in a laptop. This wasn’t about architecture, it was about engineering, and Intel won while IBM failed to innovate. PASemi later proved there was nothing wrong with PPC and better chips could be made but it was too late. Luckily, Apple bought them.

The reason I mention that Apple sells more iOS devices than Macs is to give perspective to the argument that Apple needs someone as big as Intel to make their processors. Obviously they don’t if they can get even more from Samsung. When Intel said Apple’s threat to move to ARM was a wakeup call they meant it: Apple is one of Intel’s biggest customers but Apple doesn’t need Intel.

But that doesn’t mean a failure to innovate x86 would result in a divorce from Intel. Legally speaking, IBM could not have offered to make x86 chips for Apple because Intel has really tough licensing. AMD only exists as a result of anti trust. But ARM can be licensed by anyone, including Intel, so there’s no reason that Intel can’t be one who designs (or at least fabricates) the A6.

Finally, when Steve said OS X was living a secret double life with x86 builds what he didn’t mention was why it was so easy to do so. OS 9 had roots back in the days before compilers were useful, thus it had a lot of machine code to do simple things. By the time NeXT was writing what became OS X, compilers were trustworthy enough to compile a whole operating system. In fact, most Linux distros today can be compiled on anything with the GCC.

And that brings me to OpenCL… back in the G4 days developers got their first taste of hardware acceleration outside of graphics. The G4 could operate on multiple numbers (vectors) simultaneously on a single core if you wrote special code to do so. They called it the Velocity Engine. Unfortunately, that special code was machine code – machine code for the G4 (and G5). It won’t work on G3s, or x86. Intel has SSE4 for similar purposes. What’s nice about OpenCL is that you now can write vector arithmetic in C and GCC will turn it into SSE4 for you, or ARM, or whatever. Write once, compile anywhere. It’s even technically possible for the compiler to write non accelerated code to run on unsupported hardware, although as far as I know this is not universally offered.

Today we have a similar situation to 2005. We have one set of chips that are fast and power hungry, and another that are slow but sip power at a much more favorable ratio. The ratio always wins. Raw speed isn’t good enough, it’s performance per watt that matters.