Thoughts on the Atom
Monday, May 19th, 2008The RISC vs CISC war isn’t over, and the next battle will be for handheld devices. Intel’s new Atom microarchitecture looks like a very interesting competitor to ARM and PowerPC in the “embedded systems with muscle” space (roughly: smartphones and set-tops). Hannibal nicely sums up the issue in an article that’s made the rounds of Slashdot et al, so I’ll let him do the talking for a few moments.
RISC vs CISC in the Mobile Era
I’m surprised at how strongly Intel is now embracing SMT. The Core lost HyperThreading for power and heat concerns a few years ago, and it stayed out of Core 2. But this year, Nehalem brings back SMT… and it’s in Atom too!
SMT in an in-order low-power chip is an interesting choice. Historically, SMT was about performance (not about perf per watt). In 2000, if you had a big honkin’ superscalar, you probably didn’t care about power consumption much. Hannibal makes the very strong and clear point that because of Atom’s x86 legacy (the excess of transistors burned on predecode, length decode, and complex-op microcode hardware), it’s impossible to follow the ARM Cortex strategy of building a tiny core and stamping them out (see also Sun Niagara!). The front-end is so heavy that its power cost has to be shared by/amortized over a few threads.
I’d suspect, for comparable parts, Atom will outperform Cortex on multithreaded workloads (no surprise), Cortex will beat Atom for complex single threads, and Cortex will use much less power than Atom on easy single threaded code.
Finally, I’m still not convinced by Intel’s “x86 everywhere” strategy. This is the embedded space, where different system boards share nothing in common. In answering the question, “What does this device look like to my code?” the ISA is the least interesting thing to examine. The embedded community has to support many many wildly different systems, and they do a very good job of it. The x86 community has not had any experience like this, and I don’t think giving them the option to adapt to this new world is necessarily a productive thing to do.1
Case in point: the Linux i386 branch is almost exclusively intended for “PCs”… even a diskless workstation like Scott’s little Cyrix is way out in the boonies of supported systems. But Linux also supports dozens of fantastically varied embedded systems: I count 59 ARM-based, 27 MIPS-based, 22 PPC-based, and 22 others including Super-H, SHARC, Blackfin, Tensilica, and FPGA soft-cores. There are only ten x86-based embedded systems. It is the embedded community that can most effectively accommodate new devices. All x86 could bring to the table is an arrogant assumption that things “ought to work like they do on PCs” and binary compatibility with software nobody cares about. If I’m building a set-top box, I don’t care if it can run Word ‘97. That’s just not a selling point I see for the Atom.
- Of course the PC world has many different devices, and Windows users have been dealing with driver problems as long as there have been PCs or drivers. But it’s one thing to have to track down the right driver for your old ISA sound card. It’s something completely different when your CPU talks to the sound chip over memory-mapped registers that go through a Spartan-3’s GPIO pins. ↩