Intel手机的兼容性为啥那么差
Intel手机的兼容性为啥那么差
作为传统PC行业的龙头老大,Intel始终不曾放弃平板机和智能手机之梦,但前者进展还算顺利,后者就乏善可陈了,始终打不开局面。尽管如此,时不时还是可以看到一些优秀产品的,比如最近华硕ZenFone 2就大出风头(当然也有全球首个4GB内存和超低价格的关系),但很多人准备入手的时候耳旁却传来一个声音:小心点,Intel手机的兼容性很差的,网银什么的很容易闪退。
x86架构的手机同ARM架构的手机相比,的确是存在兼容性的问题。虽然相比于几年前x86架构的手机来说,现在这方面已经有了很大的改善,不过兼容性依然是x86架构的手机最大的软肋,比如很多大型游戏,采用Intel处理器的手机运行起来都会存在一些问题。
其实究其原因,兼容性问题主要是因为指令集的不同。x86使用的是SSE指令集,ARM使用的则是NEON指令集,两者的差异导致了部分应用不兼容。
大部分Android应用都使用基于Dalvik Java的代码开发。理论上,由于Dalvik代码在系统的虚拟机中执行,在x86的ATOM平台上不会有性能损失。
其实支持Dalvik的程序还是占大多数的,但因为虚拟机性能有限,在需要更高的性能或者需要硬件的支持的时候,仍然会有一些应用绕过Dalvik,比如一些对硬件性能有较高要求的大型游戏,以及一些结合了感应器或者电源管理等硬件相关的应用。
谷歌允许开发者使用原生的C语言代码,而原生代码是针对硬件平台编译,x86、ARM或是MIPS都有其相应的二进制文件。通常来说,针对ARM平台编译的二进制代码,x86的处理器是无法直接运行的,而主流的安卓产品均采用ARM处理器。这也是早期大部分赛车游戏都无法在Intel处理器的手机上完美运行的原因。
尽管很早之前,Google的Android NDK就引入了x86编译的选项,理论上来说,开发者只需在应用中支持这个NDK,应用在提交时会自动生成2个App,设备在下载时会根据自己的架构下载合适的App。
这种方法并不难,效果也最好,难的是如何让众多开发商甘愿合作,所以我们看到,即便Intel处理器的手机已经推出几年了,但至今还是有相当一部分应用只针对ARM平台进行了编译,这也就导致了如今x86架构安卓平台的兼容性依然存在问题。
说到这儿,可能有些朋友会表示怀疑,说曾经看到过Intel处理器的手机玩3D赛车游戏,这又如何解释呢?其实很好理解,正是因为兼容问题严重,Intel急于找出一个解决方案,所以他们开发了一种转换技术“Houdini”。
“Houdini”相当于一个中间层,可以让原本不兼容的应用跑在x86上,但这种强行结合的技术运行起来往往效率不高,容易出问题,且会增加耗电量。
此前曾有媒体对这种转换技术的效率进行过详细的测试,结论是二进制转换相比原生执行x86代码,损失的性能很可观,在需要高性能的应用中可高达50%以上。在一些游戏类应用中,也会带来约400mW的CPU功耗的增加。
可见即便过了这么多年,x86的Android之路还是很漫长,恐怕最重要的还是因为此前Intel固执地玩高端,导致x86架构的手机市场占有率过低。好在目前来看,已经出现了千元级Intel处理器的手机,随着市场占有率的增加,相信x86架构的Android系统会更大的引起开发者的注意,这样也能够调动开发者的积极性。
不管怎么说,Intel处理器的手机的未来还是值得期待的,前提是还要给它一些时间。
推荐阅读