Android on x86 and Binary Translation

So the other major and obvious piece of the puzzle is what changes were required to make Android and all of its applications run on x86. Android itself has already been built for x86 before, and again we’ve seen and played with it running all the way back at IDF 2010. That part of the puzzle is relatively understood, but the devil again is in the edge cases. Among the things that need massaging for x86 are the Dalvik VM, x86 JIT, NDK, and JavaScript engine.

Android itself is actually an ideal platform for Intel to target, as the vast majority of Android applications in the Play Store run atop the Dalvik VM and use the Android Framework (75–80% are commonly cited numbers, depending on how you’re counting). The rest either are Dalvik VM applications that run and use JNI (Java Native Interface) libraries that are built for ARM only, or NDK (Native Development Kit) applications. So where does Intel’s binary translation secret sauce fit into all this? Simply put, Intel’s binary translation is the mitigation for both libraries and NDK applications that haven’t yet been ported to x86, and allows the device to expose itself as supporting two application binary interfaces (ABIs), both x86 and ARMv5, in fact this is easy enough to see upon superficial inspection of build.prop:

ro.product.cpu.abi=x86
...
ro.product.cpu.abi2=armeabi

In the case of Dalvik applications, developers don’t need to do anything. Thankfully again this is the vast majority of Android applications you encounter on a daily basis - they just work, given that Intel has made Dalvik work with x86 and spit out the right machine code.

NDK applications are also easy enough to mitigate - the developer simply needs to recompile the NDK project, which supports ARMv5 (‘armeabi’), ARMv7 (‘armeabi-v7a’), and x86 (‘x86’). Building for x86 will deliver code that’s tailored (unsurprisingly) exactly to the Saltwell CPU feature set, or more explicitly what you’d get by running GCC with the compiler flags “-march=i686 -msse3 -mstackrealign -mfpmath=sse” - this is all outlined in the CPU-ARCH-ABIS.html document as part of the NDK documentation. The resulting APK can be packaged as a “fat binary” with machine code for all three platforms, and upon install only the proper one is unpacked and installed.

The remaining two cases are where binary translation come in. In the case of applications that haven’t been rebuilt with the NDK to target x86, the binary translator magic kicks in and translates the armeabi version into x86. The same applies for applications that request some JNI libraries that are currently ARM only.

Intel outlines this in a number of slides which have made their way online, and the process is virtually completely transparent to end users and Dalvik applications. The x86 compatible Dalvik VM is a part of the OS, as are the ARM to Atom BT phase for JNI libraries. ARM native NDK apps on the other hand are translated by Intel in the cloud, validated against Intel's Android x86 emulator and pushed to the Play Store. The point is the bulk of binary translation happens away from the device itself and running on much faster Xeons in the cloud. As binary translation requires more cycles than natively running the code, which in turn consumes additional power, this was the only route for Intel to ensure that Atom would remain power efficient (and high performance) even on non-native NDK apps. Update: Intel has clarified and informed us there is no cloud aspect to binary translation, it is 100% done on the device for ARM NDK applications.

It's still unclear just how long this process takes after a developer has uploaded a non-x86 NDK app to the Play Store, or what happens if the process fails to validate for whatever reason (Does Intel get in touch with the developer? Is the app forever excluded?). Intel is being unusually vague about how all of this works unfortunately.

The combination of all of these efforts should result in over 90% of the apps in the Play Store working right away. What about in our experience? We discuss that next.

Software: Nearly Flawless

The X900 that I was sent came running Android 2.3.7, which is the latest version on the 2.3 branch. Xolo intends to deliver an Android 4.0.3 update later, and Intel internally has its own 4.0.x image stable and ready to go, which we’ve seen running on the FFRD a bunch before. It’s a bit odd to see things going this way when 4.0.x is clearly already ready, but no doubt some logistical issues with carrier support are the final hurdle. I’m eager to check out Intel’s 4.0.x port and intend to update when that happens.

 

Xolo and Intel have basically left things entirely stock with the X900. The notifications shade has one minor positive change - inclusion of the power controls, and Swype is bundled in addition to the stock Android 2.3 keyboard. There’s one Xolo Care support application preloaded, and basically nothing else. I can honestly say this is the least preloaded junk I’ve ever seen on a non-Nexus device.

 

So the next logical step is talking about how well Android and its apps work on x86 in practice, and the answer is unsurprisingly that almost everything is perfect. I installed about 80% of all the Android applications I’ve ever installed on any Android phone (thanks to the new Google Play ‘All’ tab) and nearly all of them worked perfectly. In fact, all of my daily driver applications work flawlessly: Twitter for Android, Baconreader, Speedtest.net, Barcode Scanner, Astro, Dropbox, Facebook, GPS Test Plus, GPS Status, Instagram, IP Cam Viewer, GTA III, Remote Desktop, Swiftkey X, and WiFi Analyzer all work perfectly.

 

That said there are indeed a few edge cases where things don’t seem to be perfect. For one, Flash 11 isn’t available for the X900, and throws an error in the market. The device does come preloaded running Flash 10.3 however, which gets the job done although is a bit dated. In addition, although Netflix would download, the installer would throw a ‘package file invalid’ error upon install. This is what leads me to think there’s some APK interception in the cloud and perhaps translation up there, and Netflix DRM not translating, but that’s speculation. Other than this, everything else I encountered works flawlessly, I wager your average Android user wouldn't be able to tell that this is running on a completely different architecture.

Medfield: Intel in a Smartphone Performance
Comments Locked

106 Comments

View All Comments

  • iwod - Wednesday, April 25, 2012 - link

    Since Phone Maker can just buy a reference design from ARM, and all other parts, then Fab them with TSMC, the only cost is a Engineering Team and Fab Cost. For Phone Maker with Large Volume, The Total cost of SoC is much cheaper then say buying from Nvidia.

    SoC Margin is much smaller then what they used to get with Desktop and Laptop Chip. So unless Intel's smartphone SoC is MUCH faster, otherwise there just aren't any incentive of changing over.
  • ExarKun333 - Wednesday, April 25, 2012 - link

    I doubt you know the exact pricing of all the options. If NV and Intel were not competitive competitive price-wise, they wouldn't be in the market...
  • fm123 - Thursday, April 26, 2012 - link

    Not necessarily true. Since Intel could be using it as a loss leader to take marketshare even at 0 profit. The desktop non-SoC Atom pricing starts around $40 (based on their pricelist), while something like Tegra2 is in the below $20 and Tegra3 supposedly in the $20's.

    Intel can throw lots of money at this and not make any for quite a while. Since part of the plan was likely to create a reference design anyone could sell, that is apparently what they are doing.
  • UltraTech79 - Thursday, April 26, 2012 - link

    None of what you said made "If NV and Intel were not competitive competitive price-wise, they wouldn't be in the market..." an untrue statement.
  • fm123 - Friday, April 27, 2012 - link

    If Intel "sells" for little to no profit, then it could be price competitive for the people buying it. Nvidia has to make some profit, because they are far smaller with less bank account than Intel. Intel's own current pricing of Atom shows they are way out there based on their current operating margins, but again that's not their initial goal anyway.

    Given that Intel had to spend lots to develop the reference design and port Android, they clearly invested massive R&D into the project. They have offered this service to anyone wanting to sell the phone without extra cost, you can't take an Nvidia reference and sell it as they don't do final designs and software. So they don't care about the time schedule as long as they can get marketshare, but they offer a fully manufacturable product, just like GPU reference design boards AMD and Nvidia offer.

    This was the argument I always brought up, Intel has a specific margin range they sell at. Mobile products are lower margin than they would prefer, but they need to take away market share from competition, it's similar to getting greater margins.
  • kuroxp - Monday, May 21, 2012 - link

    After that big EU fine, I'd be surprised if Intel sold their stuff below cost....
  • Lucian Armasu - Friday, April 27, 2012 - link

    Could they be doing price dumping? Either way, check this out:

    "Intel's Oak Trail platform, paired Atom Z670 CPU (US$75) with SM35 chipsets (US$20) for tablet PC machine, is priced at US$95, already accounting for about 40% of the total cost of a tablet PC, even with a 70-80% discount, the platform is still far less attractive than Nvidia's Tegra 2 at around US$20."

    http://www.digitimes.com/news/a20110815PD216.html

    The CPU from Xolo is from the same Z class, so it should cost about the same, especially with it being newer and all.
  • B3an - Wednesday, April 25, 2012 - link

    It's too thick, average performance, average battery and dont compare to Krait / A15 ARM SoC's which was really needed being as A9 is old news. But atleast it's a reasonable attempt this time. Unlike all other failed Intel attempts in this area. So quite good-ish news for Win 8 tablets...

    I just hope the dual core version for Win 8 tablets is clocked considerably higher because i'll be get a Win 8 tablet but the question is which one, and i'd like it to have good performance compared to ARM based alternatives because i'd like to run x86 software, but if the WinRT ARM alternatives are better by a large margin it might be enough to make me forget about x86.
  • Latzara - Wednesday, April 25, 2012 - link

    Too thick - it's thicker than the ones it's compared with here - but calling 1.1 cm 'Too thick' compared to 0.95 or similar is preposterous cause it basically feels the same in your hand and usage wise it's no different
  • B3an - Wednesday, April 25, 2012 - link

    Thats purely your opinion and i'm sure you're a minority. Many people are not even going to consider this because of it's thickness.

    When compared to nearly all other phones of similar performance/spec that have come out in 2012 this phone is likely thicker than atleast 98% of them. Even most phones from 2011 were often thinner. And it might be slight difference but it's easy to feel and see.

Log in

Don't have an account? Sign up now