Intel手机的兼容性为啥那么差
作为传统PC行业的领头羊,英特尔从未放弃过平板电脑和智能手机的梦想,只是前者进展顺利,后者则乏善可陈,始终无法打开局面。尽管如此,还是时不时能看到一些优秀的产品。比如最近华硕ZenFone 2就大放异彩(当然也跟全球首款4GB内存和超低价格有关),但是很多人在准备买的时候,却听到一个声音:小心,Intel手机的兼容性很差,网银很容易死机。
与ARM架构的手机相比,x86架构的手机确实存在兼容性问题。虽然与几年前的x86架构手机相比,这方面有了很大的提升,但兼容性仍然是x86架构手机最大的软肋。例如,许多大型游戏运行在采用英特尔处理器的手机上。会有一些问题。
其实究其原因,兼容性问题主要是指令集的差异。 x86使用SSE指令集,ARM使用NEON指令集。两者之间的差异使得某些应用程序不兼容。
大多数Android 应用程序都是使用基于Dalvik Java 的代码开发的。理论上,由于Dalvik代码是在系统的虚拟机中执行的,在x86 ATOM平台上不会有性能损失。
其实支持Dalvik的程序还是占了大部分,但是由于虚拟机的性能有限,一些应用在需要更高性能或者硬件支持的时候还是会绕过Dalvik,比如一些应用对硬件性能有更高的要求。大型游戏,以及一些结合传感器或电源管理的硬件相关应用。
Google 允许开发者使用原生C 语言代码,而原生代码是针对硬件平台编译的,x86、ARM 或MIPS 都有其对应的二进制文件。一般来说,x86处理器不能直接运行为ARM平台编译的二进制代码,主流的Android产品都使用ARM处理器。这也是早期大部分赛车游戏无法在英特尔处理器手机上完美运行的原因。
虽然谷歌的Android NDK很早就引入了x86编译的选项,但理论上开发者只需要在自己的应用中支持这个NDK,应用提交时会自动生成2个app,设备会根据自己的架构下载合适的App。
这个方法不难,效果最好。难的是如何让很多开发者愿意合作,所以我们可以看到,虽然Intel处理器的手机已经推出好几年了,但是还是有相当多的应用是只针对ARM的。平台编译过,导致x86架构的Android平台的兼容性还是有问题的。
说到这里,可能有小伙伴表示疑惑,说在英特尔处理器的手机上看到过3D赛车游戏。程序,所以他们开发了一种转换技术“Houdini”。
“Houdini”相当于一个中间层,让原本不兼容的应用程序可以在x86上运行,但这种强制组合的技术往往效率低下,容易出问题,并增加功耗。
此前,有媒体曾对这种转换技术的效率进行过详细测试。得出的结论是,与原生执行x86代码相比,二进制转换有相当大的性能损失,在对性能要求高的应用程序中可以高达50%甚至更多。在一些游戏应用中,还会增加CPU功耗约400mW。
可见,即使过了这么多年,x86 Android 的路还很长。恐怕最主要的还是x86架构手机的市场占有率太低,因为英特尔之前死死打高端。好在目前千元级英特尔处理器的手机已经出现。随着市场份额的提升,相信基于x86架构的Android系统会受到开发者更多的关注,这也能调动开发者的积极性。
不管怎样,英特尔处理器手机的未来还是值得期待的,前提是再给点时间。