x86架构手机跑安卓好吗?(脑补)

华硕低价位手机ZenFone一推出就掀起市场话题,许多人也对ZenFone所采用的Intel Atom处理器有所意见,深怕其相容性问题无法正确执行应用程式App,这究竟是怎么回事呢?

Intel近几年一直很想进军手机或是平板的移动市场,特别是采用Android操作系统这一块大饼(忘了MeeGo吧!),所采取的战术便是尽量将低Atom系列处理器的功耗,使其符合手机长时间待机的要求,实际使用第一世代的产品即为Atom Z24x0系列,而Asus ZenFone则是采用第二世代的产品,Atom Z25x0系列。相较于前代,Z25x0变成双核心四处理器,GPU的部分则是从PowerVR SGX540大幅升级至PowerVR SGX544MP2。

ARM在手机上奠定基础

Android起初发展之际,并没有限定在何种平台上执行,只不过在当时的时空环境背景因素下,第一台市售Android手机HTC Dream(G1)采用了Qualcomm MSM7201A,这是款ARMv6指令集的产品。

之后的情形大家都晓得了,ARM开始如日中天,绝大部分Android手机皆采用相容ARM指令集的应用处理器(少数为MIPS指令集),苹果的iPhoneiPad系列产品更是全程采用。在这后PC时代,Intel于移动设备市场的影响力实在不大,过去还有XScale这个产品线可在PDA上占有一席之地,甚至它的高效能吸引了不少人指定购买,但之后Intel把XScale卖给了Marvell,也就没有适合手机使用的处理器了。

Atom被抓来打ARM

在2011年9月时,Intel和Google共同发表声明,两者将一同最佳化未来Android版本在x86系统上的表现;也就是说,原本用在netbook和UMPC上的Atom处理器,现在也要进军手机市场了。

不过针对半路杀出的Intel x86架构,市场上已经有许多应用程式针对ARM最佳化,若是像采用MIPS架构的Android装置一样,程式相容性不佳的话,大概也就能直接判断Atom出师未捷身先死,所以Intel制作了Binary Translation这个转体中介转议层,用以相容ARM最佳化的程式。

x86架构手机跑安卓好吗?(脑补)

▲如果Android程式以Java写成并丢入Dalvik虚拟机执行,在使用Intel Atom的Android手机中执行绝大部分没有问题。

x86架构如何相容ARM程式

要了解Binary Translation的原理,首先要了解Android程序是如何运作的。起先Android程序皆使用Eclipse开发环境和Android SDK,以Java语言写成,经过封装转换成Bytecode后丢入Android装置中,1个称为Dalvik的虚拟机器中执行。

不过稍微了解程序运作的人都知道,虚拟机虽然能够带来跨平台、不限硬件规格执行的好处,但同时也会因为虚拟机器的转换,降低执行效率。因此后来Andriod除了SDK(Software Development Kit)以外,也推出NDK(Native Development Kit),让开发人员能够绕过Dalvik转译造成的效能损失,同时又能够使用Java以外的程序语言撰写(如C/C++)。

由于程式经过NDK转译之后,出来的东西是硬件能够直接执行的机器码,执行效率较高,但同时带来了相容性的问题——编译给ARM处理器的机器码一定跟编译给x86处理器的不一样,这就导致Intel的Atom处理器无法正常执行部分程序(通常是3D游戏,因为这些程式对于效能要求较高)。如果Intel放弃掉这些程序,想必消费者绝对无法接受,于是便有了Binary Translation这个中介转译层,可把ARM的机器码转给x86执行。

x86架构手机跑安卓好吗?(脑补)

▲Intel Binary Translator用来转换那些使用ARM NDK的应用程式,让他们能够在Intel Atom上正确执行。

ARM本身也有相容性问题

有了Binary Translation的关系,所以Intel Atom能够执行已对ARM处理器编译的程序,但是效能会比在ARM处理器执行时略为下降,同时此Binary Translation也并非100%完全相容,偶尔也会有无法执行或是执行到一半跳出的情况。

但也别以为ARM本身不会出现相容性问题,因为ARM采用授权方式,因此各家处理器的GPU部分并不相同,例如Qualcomm使用自家的Adreno、NVIDIA使用GeForce ULP、Samsung使用ARM的Mali或是PowerVR的SGX,由于GPU对于规格的支援度不同(如材质压缩格式),导致各方也必须为不同的应用处理器推出不同的版本,这现象在3D游戏中特别严重。

开发商态度才是关键

目前Android市场上还是以ARM处理器的手机为大宗,如果开发商无力支持各平台,当然会以市占最大的装置作为考量,以便在最小成本中谋取最大利益,有而外的经费才去针对不同的硬件调整程序码。

但相较于应用程式相容性,小编其实比较在意Intel Atom的续航力,目前市面上采用Intel Atom的手机都还在Z24x0和Z25x0的规格,就笔者的测试经验来说,续航力普遍都比采用ARM处理器的手机短。

x86架构手机跑安卓好吗?(脑补)

▲以Asus ZenFone 5(版本号码ASUS_T00F_TW_user_20140327_4.3.2.935705)为例,笔者只有遇到Basemark X 1.1无法正确执行而已。

上一篇:Django实现瀑布流,组合搜索


下一篇:R语言学习