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."
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."
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.
Somehow missing from TFS...
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
It worked amazingly well, but it still sucked.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
A compiled binary doesn't care how well-written your C is if you are running it on the wrong platform.
"Ignorance more frequently begets confidence than does knowledge"
- Charles Darwin
Clearly we just need a small set of POSIX apps to do 'git, 'make' and 'gcc' on your phone.
Download the signed source code from the app store.
>;k
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...
With ARMv8, a lot of companies have this kind of license. I think there are six independent ARMv8 implementations that I'm aware of, but there may be more. Well, I say independent - they all had engineers from ARM consult on the design, but they're quite different in pipeline structure. This is the problem Intel is going to face over the next few years. They could compete with AMD by outspending them on R&D: Intel could afford to design 10 processors and only bring 3 to market depending on what customers wanted, AMD couldn't afford to throw away that much investment. This is how the Pentium M happened: they rushed to market one of their back-burner designs. Now, however, they're competing with half a dozen companies all of whom have ISA-compatible chips and all of whom are content to heavily optimise their designs for a particular market segment.
I am TheRaven on Soylent News
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!
I still don't understand why APKs are not just pure LLVM byte code, and either the store or the phone completes the byte code to native compile, including the final optimization passes...
Regards,
-Jeremy
"They've been actively focusing on increasing power efficiency for a number of years now, so I have no doubt they'll be able to bring strong competition."
It Intel wants to, they can bring strong competition. They used to have their own ARM variant, but sold it off. They decided that there was no future in low power. Oops.
When they do get a low power chip they seem to lose interest, and then crank up its performance, and its power budget. Then Steve Jobs would yell at them, and they would produce another low power chip. Then repeat the cycle. Now that Steve is gone, will they go back to thinking a 135W CPU is acceptable?
In Intel's world, Grand Coulee dam exists to power their CPU, and the rest of the hydropower on the Columbia is to run the cooling system for that chip. Institutionally they haven't figured out that we have all the cycles per second we need, and battery life is now the critical parameter. Obviously if your dream PC has a 1000 W power supply on a dedicated circuit you will not care about power the same way you will if your phone keeps going dead every time you need it.
As is often the case, the problem is Management, not Engineering.
For the record, I'm using a 2.5 Ghz Core 2 Duo P8700. It's 6 year old technology and entirely fast enough. It has a 25 W power budget. The "ultra-low power" 2 core Haswell has a 35 w power budget. So they have gone backwards. Remember, I don't need more speed, so I don't care if the Haswell CPU is faster.
The question is does Intel get this point? If they say "you are not our target demographic" then fine, and I'll pay them just as much attention as I pay to Miley Cyrus. Which is to say none.
Hey Juden, don't make it bad.
Take your sad chip and make it better.
Remember to put it into their phones
Then you can own
The Android market.
Slow Down Cowboy! It's been 1 hour, 47 minutes since you last successfully posted a comment
I'm lots older than that, and I don't remember any such complaints. Because originally the ARM chip was made only for the Acorn Archimedes. Which sold to people who certainly didn't want a PC clone. Later it started to be used as the CPU in PDAs, printers and mobile phones. None of which would have benefited at the time from Intel compatibility.
Issues with ARM not being x86 compatible are a recent thing.
Maybe there were complaints in the hobbyist Linux-everywhere crowd before there was an ARM port of Linux?
More to the point, the problem is that x86 is not compatible with ARM. And it's pretty much just a problem for Intel. So not really a problem at all.
At this point, the tables are reversed, since what the actual Android users want is ARM compatibility, and x86 is the odd man out.
However, even in the ARM universe the compatibility is murky as there are so many varieties; straight up ARM, thumb, thumb-2, Jazelle as the basic instructions sets, plus some models that have multiply instructions, some have DSP instructions, and so on. Most of the Androids though presumably come with high end Cortex-A series and enough memory to use 32-bit ARM instructions which simplifies it.
They should have just done the whole thing in Forth, which can be faster than many VMs, low level enough to do everything you want, time tested and proven, and with optional nonportable escapes to assembler for special system operations.