Slashdot Mirror


Intel Confronts a Big Mobile Challenge: Native Compatibility

smaxp writes: "Intel has solved the problem of ARM-native incompatibility. But will developers bite? App developers now frequently bypass Android's Dalvik VM for some parts of their apps in favor of the faster native C language. According to Intel, two thirds of the top 2,000 apps in the Google Play Store use natively compiled C code, the same language in which Android, the Dalvik VM, and the Android libraries are mostly written.

The natively compiled apps run faster and more efficiently, but at the cost of compatibility. The compiled code is targeted to a particular processor core's instruction set. In the Android universe, this instruction set is almost always the ARM instruction set. This is a compatibility problem for Intel because its Atom mobile processors use its X86 instruction set."

9 of 230 comments (clear)

  1. Fsck x86 by Anonymous Coward · · Score: 4, Insightful

    I like compatability, but I've had it with x86. Let ARM hog the limelight for a while, no reason it shouldn't have its fifteen minutes. And let x86 die, it's way past its BBE date and has outstayed its welcome by several generations.

    1. Re:Fsck x86 by Anonymous Coward · · Score: 5, Insightful

      This person is likely in their 20s, I am assuming early 20s. With that said, I am in my 30s, somewhat early. My first PC was an 8088 and I've deep dived into every modern processor since then. Even with the debacle that was Windows 7 and 8, I am still going to stand behind x86 as a great architecture that can stand the sands of time.

      Scalability: What other architecture has scaled so far that it was completely decimated two competing architectures from the past and the future at the same time. The original 8088/86 was 3mhz, the latest x86 offering is 4ghz.

      Popularity: Both Apple and Sun saw the writing on the wall, Sun saw it too late, Apple saw it early (or saw what happened to Sun). They both shifted from a proprietary processor and chipset to a more common and popular platform. Both platforms had specific benefits over x86 until x86 scaled far and beyond what they both offered.

      Backwards Compatibilty: I know my x86 processor is still going start in 8-bit mode and I know that I can put it in 16bit mode and run my 1992 applications. But to that extent, x86-64 just extends the instruction set. eg ARM32 does not play on ARM64.

      Let's face it. I witnessed Y2K. I witnessed every weak architecture under the sun get wiped out because it had shortcomings. Intel designed the best architecture with x86 and naysayers generally harp because it's "too big". I, for one, plan to teach my children x86 ASM so they understand the basics.. then let them find MIPS or ARM or whatever-fad-arch-is-current so they too can appreciate the design of x86.

    2. Re:Fsck x86 by lagomorpha2 · · Score: 5, Funny

      I, for one, plan to teach my children x86 ASM so they understand the basics.. then let them find MIPS or ARM or whatever-fad-arch-is-current so they too can appreciate the design of x86.

      This is just a guess but you don't actually have children yet, do you?

    3. Re:Fsck x86 by drinkypoo · · Score: 4, Interesting

      You figured that out...how exactly? It's a RISC, RISCs have historically scaled very, very well.

      What does that even mean any more? Visibly-CISC processors are now internally-RISCy (All of them since Am586) and there is actually a benefit to be derived from variable-length instructions and the x86 decoder is a small portion of the modern CPU. But ARM cores have never gotten up into the big, big clock rates because they've never been designed for them, instead targeting efficiency. That's a much easier goal to reach than bigger shinier if you're on a constrained budget, and it certainly has paid off for them now that we care about power budgets, but they're still having trouble scaling.

      I'd sure like to hear anything insightful anyone has to say about XScale. It was the fastest ARM implementation of its day, but it was also the most power-hungry, and AFAICT Intel never really managed to scale either performance up or power consumption down after their initial release, and then dropped it. Is that how it played out?

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    4. Re:Fsck x86 by OneAhead · · Score: 5, Interesting

      First of all, at this point, it is misguided to talk about x86 as an architecture; there is generally little or no architectural overlap between two x86 processors that are a few generation apart. x86 is an instruction set, or even more correct, a family of instruction sets. The distinction is important, especially in the age of complex instruction decoders; a lot of the more complex x86 instructions are internally decoded into smaller pieces, and one could say that the CPU internally runs its own, different instruction set. The fact of supporting a certain instruction set nowadays says almost nothing about the underlying architecture.

      So we're talking about an instruction set. One that was conceived in an age where manual coding in machine language was far more common than it is today; the original x86 instruction set was designed to be easy for a human bitpusher to handle, whereas newer instruction sets like ARM are more geared to get the most out of a decent optimizing compiler. What followed for x86 was extension upon extension, and the instruction set is now so byzantine that x86 is a very difficult market to break into; the design complexity of the decoder can probably be overcome, but all the cross-licensing between Intel and AMD cannot. The complex, organically-grown instruction set also leads to some waste of silicon in having to support all those instructions, and waste of performance/energy efficiency in that the instruction set is not designed from the ground up towards efficiency. People on the x86 side make a compelling argument that this has become negligible, but the fact remains that I'm still not seeing any x86 processor getting (unbiased) performance/W scores that are close to common ARM processors.

      My first computer contained a Z80, a true 8-bit processor (your claim that x86 has 8-bit mode is false; the lowest common denominator for x86 is the 16-bit 8086, which you're probably confusing with the 8-bit 8080 which is not x86 compatible). More relevantly, I also have experience running scientific workloads on a whole zoo of processors. I have particularly fond memories of the later Alphas, which wiped the floor with everything up until and including the Pentium 4, and were very competitive even against Athlon 64 and Core2 performance-wise (but not price-wise). Repeat after me: x86 has zero inherent architectural advantage!!! The big advantages it has is (1) economies of scale and (2) the higher profits of a mass market that generate more revenue to be pumped into R&D. There hasn't been a kid on the block that could compete on these fronts - not until ARM came around.

      While Intel is sitting on an impressive pile of cash and R&D potential, their attempts to match ARM in performance/W are so far unsuccessful when looking at non-biased benchmark results, and ARM has profited from this in establishing a mass market of its own. Things are about to get interesting from here onwards. I can't predict whether x86 or ARM will win. The outcome might be coexistence, with x86 keeping its dominance in the server room, workstation, office and hard-core gaming, and everything else becoming ARM. Whatever the outcome might be, I am firmly rooting for ARM, though. Technically, it's leaner, more rationally designed instruction set that is more frugal with resources (die size, cache & memory usage) and better reflects present-day usage cases. And the fact that it's relatively straightforward for a newcomer to license it and start making chips will bring some healthy competition onto the stage.

    5. Re:Fsck x86 by rahvin112 · · Score: 4, Informative

      A typical processor design takes around 4-5 years from concept to production silicon. Intel did not even consider power as a constraint (other than a maximum) until 2008.Haswell was the first ground up design where power was a constraint, but still not a major constraint. With Haswell Intel was within shooting distance of ARM power levels without even compromising computing power.

      In about 2010 power consumption became not just a feature, but a required feature in low watt to milliwatt ranges. Intel should have a processor to meet that requirement later this year or early/mid next year. Intel's already preliminarily released some (un-handicapped) atoms that have about 75% of the performance of Haswell and are power competitive with ARM.

      Up until a year or two ago when the PC market began to crater Intel wasn't interested in playing in the low power market because margins were atrocious, but with the rise of high margin smartphones and the reality that they will likely replace a significant chunk of the personal PC market they've begun to take the market seriously. Writing them off as unable to play this game because they haven't bothered in the past would be incredibly stupid. They are the largest CPU designer in the world and they have some of the smartest CPU designers in the world working for them, it just takes a while to turn such a big boat. Give it a few more years then come back and talk about x86 being unable to compete.

        I don't know if Intel will succeed but if they put their resources into it they will easily outpace ARM because in the CPU design game it's about design resources and FAB's and Intel has both in spades (in FAB's Intel is one entire process step ahead of everyone else), more than the rest of the ARM market combined and they won't be designing the same thing 50 times. See that's the ARM markets biggest handicap, there are dozens of companies reinventing the wheel over and over again. Intel's biggest handicap is their desire to not eat existing markets and it might be their undoing (a processor with 75% of haswell's power with ARM's power use could likely cannibalize much of their Haswell sales and the tricks to prevent that, ie sales restrictions, will also handicap the processors chances in competing with ARM). IMO if Intel fails at competing with ARM it will only be because they didn't want to cannibalize sales with lower margin parts.

  2. "newsy" bits by bill_mcgonigle · · Score: 5, Informative

    Somehow missing from TFS...

    Intel has released a beta of its native development environment called Intel Integrated Native Developer Experience, (INDE) and written plugins for Eclipse the most Android developers use to build for Android so the apps can be X86 compatible and execute efficiently on Atom processor-based hardware.

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  3. Bigger problem than Intel admits by edxwelch · · Score: 5, Informative

    ARM ran a survey of the top 500 Android apps in the market and found that only 20% are pure Java, 30% are native x86, 42% require binary translation and 6% do not work at all on Intel's platform. To make matters worse the level of compatibility is falling. They also found that running an app in binary translation mode takes a huge performance hit."
    http://www.theregister.co.uk/2...

  4. Not useful to me, but I'll support Intel anyway. by Dr.+Manhattan · · Score: 5, Interesting
    I made an app for Android - ported an emulator written in C++. (Link in sig, if you're interested, but this isn't a slashvertisement.)

    So the core of the app, the 'engine', is in C++ and must be natively compiled, while the UI and such is in Java. Naturally, the binary's compiled for ARM first. This actually runs on a lot of Intel Android tablets because they have ARM emulators. But, thanks to a user finally asking, I put in some time and now I can make an Intel version. (Heck, the original source was written for Intel anyway, so it wasn't a big stretch.) The existing tools are sufficient for my purposes. And it runs dramatically faster now on Intel.

    However, for the developer it's mildly painful. The main issue is that you have a choice to make, with drawbacks no matter which way you go. You can include native libraries for multiple platforms, but that makes the APK larger - and according to a Google dev video I saw, users tend to uninstall larger apps first. In my case, it'd nearly double the size. So instead I'm putting together multiple APKs, so that ARM users get the ARM version and Intel users get the Intel version - but only Google Play supports that, not third-party app stores. I haven't looked into other app stores, and now it's less likely I will.

    Note that native development can be important to apps for a non-technical reason: preventing piracy. An app written purely in Java is relatively easy to decompile and analyze, and pirates have a lot of techniques for removing or disabling licensing code. Adding a native component makes the app much harder to reverse-engineer, at least delaying the day that your app appears on pirate sites.

    --
    PHEM - party like it's 1997-2003!