Slashdot Mirror


Why Linus Torvalds Prefers x86 Over ARM (pcworld.com)

Linus Torvalds answered a question about his favorite chip architecture at the Linaro Connect conference. An anonymous Slashdot reader quotes PCWorld: People are too fixated with the instruction set and the CPU core, Torvalds said. But ultimately "what matters is all the infrastructure around the instruction set, and x86 has all that infrastructure... at a lot of different levels. It's open in a way that no other architecture is... Being compatible just wasn't as big of a deal for the ARM ecosystem as it has been traditionally for the x86 ecosystem... I've been personally pretty disappointed with ARM as a hardware platform, not as an instruction set, though I've had my issues there, too. As a hardware platform, it is still not very pleasant to deal with."
You can watch the whole half-hour conversation on YouTube. My favorite part is where Linus candidly acknowledges that "sometimes my grumpiness makes more news than my being nice... 99% of the time I'm a very happy manager, and I mentally pat people on the head all the time. That maybe then highlights the times when things don't work so well a bit more."

12 of 150 comments (clear)

  1. Fitting by GrahamJ · · Score: 2, Insightful

    I guess it's fitting that he doesn't realize patting someone on the head is a condescending gesture.

    1. Re:Fitting by ShanghaiBill · · Score: 5, Insightful

      I guess it's fitting that he doesn't realize patting someone on the head is a condescending gesture.

      That is culture dependent. In some cultures patting, or even touching, someone's head is offensive. In other cultures, it means nothing.

      I have met Linus a few times on a person-to-person level, and he was always friendly and considerate. Tove is also a very nice person.

  2. ARM driver vendor code is atrocious by nyet · · Score: 5, Insightful

    There is no reason to coddle developers who write shit code.

    And make no mistake, ARM driver developers employed by ARM vendors are truly horrifyingly bad programmers.

  3. Re:Well... he has a point on all fronts. by Guy+Harris · · Score: 5, Insightful

    Well... he has a point on all fronts.

    1) x86 is so backward compatible it's... grand. Except for legacy bugs to push forward

    2) ARM is, or rather, was, not afraid to put efficiency above complete and total backward compatibility

    Except what he was really talking about was x86-based "IBM-compatible personal computers", which have, in at least some layers other than the instruction set, a lot of similarity, vs. ARM-based {smartphones, tablets, embedded systems, etc.}, where everything other than the CPU may be significantly different from system to system.

    That has nothing to do with the instruction sets, it has to do with the fact that x86 got its big boost from the IBM PC and the clones of it, which were all pretty similar machines so that MS-DOS and its successors would Just Work on them, while ARM got its big boost from phones/tablets/embedded boxes, where the vendor supplied some or all of the OS, and they didn't care much about having to tweak the OS for the next machine.

  4. Re:Well... he has a point on all fronts. by Anonymous Coward · · Score: 3, Insightful

    If ARM had a BIOS with PnP it'd be most of the way to solving this.

    That little HAL we all ignore goes a long way.

  5. He is dead right for PCs, Dead wrong for embedded. by thesupraman · · Score: 5, Insightful

    As usual Linus is talking 'general' but thinking focused.
    What he is actually talking about is high level computers (which these days includes smartphones, tablets, etc however there is a little
    more crossover there).
    Where he has no knowledge, understanding, or consideration is lower level applications - ie :embedded.
    Arms flexibility, and tendency to closely integrate hardware at the low level makes it is fantastic micro CONTROLLER implementation in general.
    The STM32 series are a great example of this, and it is an area that Intel seems to have lost the plot on. Despite Intels gushing money from time
    to time into such areas, very very few would touch them with a barge pole. Their IO infrastructure is just TOO complex and unnecessary for such
    applications (no one there uses PCIe, etc. Even USB tends to emulate a serial device).

    In the mid range - ie: cellphone, tablet, etc ARM Chip sellers integration is great, however their documentation is TERRIBLE, and they do not seem to understand that open hardware specifications are gold (I am looking at you allwinner, rockchip, amlogic, himedia, mediatek, etal) and who dont seem to realise that sharing that knowledge gets a LOT more developers on side (or possibly hide it because of IP fears... who can be sure). There are vendors without
    such problems however (generally but not exclusively the non-chinese chip makers).

    In the high end - PCs, Servers, etc. well, thats a mess right now. Perhaps AMD etc will help sort it out, or perhaps not.

    In the end, ARM makes sense in a whole lot of niches, however not really those Linux focuses on - his primary focus has always been large server and workstation hardware, an area ARM is only just starting to overlap into in a small way.

    So, what he says is factual in one area, but that area is a niche to arm, and a stronghold of Intel, so is it really a surprise?

  6. Re:Grumpy Old Man by Anonymous Coward · · Score: 5, Insightful

    Grumpy dude is grumpy for a reason, and the ARM world not being a platform but a collection of one-of devices is part of that reason. Have you never wondered why there isn't an installer for Android which you can use to install a fresh OS on any ARM phone? That's what Linus is talking about: There is no ARM platform which would enable this. That's why Android is a firmware construction kit, not an installable OS, a fact that I have been preaching for several years. If ARM wastes more time, Intel will eventually usurp the mobile market by being more "compatible".

  7. Re: Well... he has a point on all fronts. by Anonymous Coward · · Score: 4, Insightful

    Plug and play along with BIOS are not the words you want to use. Standard firmware interfaces and IO/memory maps would be more appropriate. We don't want a repeat of the bad old days.

  8. Re:He is right though by ShakaUVM · · Score: 4, Insightful

    >This doesn't mean that the ARM instruction set isn't a joy to work on though.

    Yes, I'm glad somebody here said this. I have programmed assembly for x86, 68k, MIPS, SPARC, etc., and ARM is my favorite by far to program in. It's very sane and sensible. The ISA's documentation is... ok, there could be better documentation on ARM's part, but it's good enough I suppose.

    I was able to take an image manipulation library function call written in C++ from 6 seconds to .03s using assembly in about an hour's work. (A 4K image file held in memory, processed by a RPi 2.) That would be good enough to do sepia toning in real time on a 4K video stream if the RPi 2 was actually capable of doing I/O fast enough to feed the function.

  9. Re:Grumpy Old Man by Anonymous Coward · · Score: 5, Insightful

    That's because you're too soft and your ego writes checks your intellect can't cash.

  10. Re:Well... he has a point on all fronts. by tlhIngan · · Score: 4, Insightful

    As Linus says, the main issue with ARM is not the CPU core but all the other stuff you need to make a computer. On x86 most of it has become standardized, even if the standards are terrible. On ARM manufacturers do their own thing and produce a "board support package" (BSP) that provides semi-standard interfaces to it, but of course it's a pain for an open OS like Linux to deal with and many of them are not interested in providing enough documentation for native drivers to be written.

    ARM is kind of a pain in the arse to do low level development for due to the BSP stuff, but on the other hand in the low power/low cost segments x86 isn't even a player. You can get low end ARM parts for less than a Euro. If they were not such a bugger to work with they would be displacing 8 bit parts at a much greater rate, but 8 bit's simplicity keeps it popular.

    The thing is, a PC is really just one hardware design. Memory is in one fixed spot in the memory map. I/O is in the same spot (in the IO bus, since it's x86... but even so..).

    It's at the point where you could take any x86 based PC and program it because you know where all the components are. If you need to talk to the VGA adapter, well, the framebuffer is always in the same location.

    And we have to admit, what we call "x86" really is "IBM PC Compatible" because there were many x86 designs in the early days that were not compatible. We just happened to base our modern PC design off of what is now a 30+ year old PC design. Heck, I think Intel emulates the A20 Gate functionality on the CPU (a design leftover from the move from 8086 to the 80286) - there is a pin that basically states the value of the gate.

    Add in the other peripherals that are basically identical like keyboard controllers, DMA controllers (not used anymore), etc, and you have what is effectively just a single hardware platform. It doesn't matter if you have Intel or AMD or nVidia graphics - at a basic level, VGA mode works identically on all of them.

    ARM, on the other hand, isn't a monolithic design - it's a CPU core and people attach peripherals to it to meet the design requirements. There is no universal keyboard controller for ARM, because one doesn't exist - some devices have no keyboards and don't need it, others have a full PC keyboard, and yet others still have a basic one able to scan 16 keys in a 4x4 matrix.

    The biggest difference is that most x86 designs are not SoC based - so your options aren't as fixed. If you want a different graphics chip, it's usually external, etc. But for ARM, they are SoCs and thus everything is combined to form an almost complete system in a single chip - no CPU, northbridge, IO controller(south bridge), etc type PC design.

    And lest we forget, x86 can be incompatible - Intel made a few SoCs that run fine on Linux, but cannot run Windows at all because Windows requires things a certain way, which was not provided. Even today, Intel SoCs often have a "Windows compatibility" block that contains peripherals and other things required for Windows support.

    In the end, a PC is like a car - it has 4 wheels, a steering wheel, a transmission, etc, and they all basically drive the same - you need a key, you need to start the engine or activate the card via the ignition (for EVs or hybrids), apply brakes, release the parking brake, shift transmission into reverse, then back out of your spot. Then put the transmission into drive, press down on the accelerator and off you go.

    ARM would be more like Caterpillar or Briggs and Stratton - they sell the engine, which forms the core of whatever, but the final vehicle may not be a car. It may have treads instead of tires, use a differential control mechanism, etc. Or the vehicle's movement may not be related to the engine at all

  11. Re:He is dead right for PCs, Dead wrong for embedd by Anonymous Coward · · Score: 2, Insightful

    "Have you really looked at the DD-WRT project lately? It is completely dead, largely due to the lack of a common platform."

    That's a tiny part of it. The _other_ part of it is that (fancy management GUI aside) OpenWRT kicked the everloving shit out of DD-WRT in terms of capabilities and code quality for _years_. DD-WRT was _dead_ eight years ago... it just couldn't compete with OpenWRT.