ARM Compatibility: Binary Translation

Similar to Apple's move from PowerPC to x86, Intel finds itself in a difficult position with bringing Atom to Android. The OS isn't an issue as it has already been ported to x86 and all further releases will be available in both ARM and x86 flavors. The bigger problem is application compatibility.

There's already support for targeting both ARM and x86 architectures in the Android NDK so anything developed going forward should be ok so long as the developer is aware of x86.

Obviously the first party apps already work on x86, but what about those in the Market?

By default all Android apps run in a VM and are thus processor architecture agnostic. As long as the apps are calling Android libraries that aren't native ARM there, once again, shouldn't be a problem. Where Intel will have a problem is with apps that do call native libraries or apps that are ARM native (e.g. virtually anything CPU intensive like a 3D game).

Intel believes that roughly 75% of all Android apps in the Market don't feature any native ARM code. The remaining 25% are the issue. The presumption is that eventually this will be a non-issue (described above), but what do users of the first x86 Android phones do? Two words: binary translation.

Intel isn't disclosing much about the solution, but by intercepting ARM binaries and translating ARM code to x86 code on the fly during execution Intel is hoping to achieve ~90% app compatibility at launch. Binary translation is typically noticeably slower than running native code, although Intel is unsurprisingly optimistic about the experience on Android. I'm still very skeptical about the overall experience but we'll have to wait and see for ourselves.

 

What's Different This Time Around: Google & A Sweet Reference Platform Final Words
Comments Locked

164 Comments

View All Comments

  • janderk - Wednesday, January 11, 2012 - link

    The numbers are still impressive, but there isn't such a thing as a stock Gingerbread browser performance.

    The Intel phone currently runs Android 2.3.7 in which browser performance is on par with Honeycomb/ICS. You can't compare those numbers with a S2 or Sensation running old Honeycomb versions. If you do, you are comparing Android versions more than hardware.

    Google seems to have backported some browser code pieces to Gingerbread. A galaxy S2 on 2.3.6 with a stock ROM/browser scores around 90.000 in the Browsermark and around 2200 in the Spidermark. Ask Brian. He double checked and got even better numbers than I got.
  • Lucian Armasu - Wednesday, January 11, 2012 - link

    That's a very good point. I wouldn't put it past Intel to "hype up" their marketing a little too much. I've been watching them very closely regarding this lately, and a lot of what they are saying is simply BS.

    Let's wait until we actually have the product in the market before we evangelize their yet to be seen chips.
  • Wilco1 - Wednesday, January 11, 2012 - link

    While I like your article, you can't really conclude anything about micro archictures based on 2 micro benchmarks which have likely been highly tuned by Intel. Also note the Atom runs at 1.6GHz while the Nexus runs at 1.2GHz, so much of the performance difference is simply due to frequency.

    For a recent comparison between Cortex-A9 and Atom, check out these:

    http://www.phoronix.com/scan.php?page=article&...
    http://openbenchmarking.org/result/1201051-AR-1112...

    In these 1.0 and 1.2GHz Cortex-A9 SoCs completely obliterates 1.6GHz netbook Atoms in performance on mostly single-threaded benchmarks. So in terms of micro architecture comparison, your article is dead wrong. When compared using same compiler and OS, the A9 beats Atom at a much lower frequency due to having higher IPC as a result of out-of-order execution. Note how it scores much higher on most memory benchmarks.
  • milli - Wednesday, January 11, 2012 - link

    Actually the Z2460 runs at 1.3Ghz but can turbo to 1.6Ghz.

    Something might be up with the PandaBoard ES. Phoronix also has a Tegra 2 based review and that one also scores better on some tests than the PB-ES (just like the Exynos). The problem is that the scores are not really comparable because all three (PB-ES, T2, Exynos) use different compilers and kernels. Only the PB-ES uses the same compiler (and probably parameters) as the x86 systems. So you'll need to wait for real Medfield reviews when the time comes (or for Phoronix to do a better comparison). Especially the Exynos results need to be taken with a grain of salt since they used a total of three compilers there.

    It's known that Atom's single threaded performance is bad. It has HyperThreading to cover that up. Since Android's JavaScript engine is multi-threaded, Atom performs well.
  • Wilco1 - Wednesday, January 11, 2012 - link

    True, but you can bet Intel ensured the benchmarks were run at 1.6GHz, even if that wouldn't be feasible in a real phone due to cooling. So we have to wait for an actual phone with a standard Android version for the real comparison.

    There are indeed issues with the Panda board, the Ubuntu version used isn't compatible with the OMAP4460 so it isn't setup correctly. There are also compiler option issues and use of a slow flash card which reduces the scores. In terms of compilers used, GCC 4.5 or 4.6 doesn't make a major difference, so these benchmarks give a reasonable indication how Cortex-A9 would do vs Medfield.

    If Android JavaScript is multithreaded, you'd expect a dual core A9 to do much better than Atom as you get a 100% speedup from the second core, not just 30% from hyperthreading. I suppose we'll see when the Intel improvements are added to the mainstream Android version.
  • Wilco1 - Wednesday, January 11, 2012 - link

    True, but you can bet Intel ensured the benchmarks were run at 1.6GHz, even if that wouldn't be feasible in a real phone due to cooling. So we have to wait for an actual phone with a standard Android version for the real comparison.

    There are indeed issues with the Panda board, the Ubuntu version used isn't compatible with the OMAP4460 so it isn't setup correctly. There are also compiler option issues and use of a slow flash card which reduces the scores. In terms of compilers used, GCC 4.5 or 4.6 doesn't make a major difference, so these benchmarks give a reasonable indication how Cortex-A9 would do vs Medfield.

    If Android JavaScript is multithreaded, you'd expect a dual core A9 to do much better than Atom as you get a 100% speedup from the second core, not just 30% from hyperthreading. I suppose we'll see when the Intel improvements are added to the mainstream Android version.
  • BSMonitor - Wednesday, January 11, 2012 - link

    "If Android JavaScript is multithreaded, you'd expect a dual core A9 to do much better than Atom as you get a 100% speedup from the second core, not just 30% from hyperthreading. I suppose we'll see when the Intel improvements are added to the mainstream Android version. "

    No, you wouldn't get 100% speed bump because there are many more factors besides CPU resources that ultimately affect performance.

    You are clearly a noob fanboy on a rant.
  • Wilco1 - Wednesday, January 11, 2012 - link

    How much speedup you get obviously depends on lots of factors. However the fact remains that 2 cores have much more raw performance than 1 core with hyperthreading, so if JS is really multithreaded then the advantage would be to ARM, not Atom.
  • virtual void - Thursday, January 12, 2012 - link

    You have to keep, at least, two things in mind here

    1. The efficiency on the second HT in Atom is much higher than the 20-30% you see on Sandy Bridge. On Atom, 50-60% is probably a more accurate number based on a number of test I've done myself. And this is not because Atom in anyway is better than Sandy Bridge, it is quite the opposite. The in-order design and simple executions units in Atom will cause a lot more pipeline stalls which means that the other thread will get access to all the power (or lack of power) in the CPU.

    2. You are that two physical cores has more raw power than two HT on the same core. But when you run a single program on two treads and work on the same data, HT has a huge benefit in that the two program threads will communicate via the L1 cache (shared between the HT) while two threads running on different physical cores will communicate via the L2 cache. The L1 cache has a much lower latency and much higher bandwidth compared to the L2 cache.

    So HT can be very efficient in accelerating things where two threads are working on the same data-set. But two physical cores is probably always better when you have two threads running different programs or at least working on a data-set that is completely thread local.
  • Wilco1 - Thursday, January 12, 2012 - link

    You're right if 2 threads belong to the same process and communicate a lot then HT has lower overheads, but the downside is that you quickly start trashing the small L1 caches. HT works better on Atom indeed, but 50-60% on average sounds a bit high, especially since Atom stalls on cachemisses.

Log in

Don't have an account? Sign up now