Chinaunix

标题: 分析:X86上的Android:性能与兼容可否兼得? [打印本页]

作者: Send_linux    时间: 2013-05-13 09:35
标题: 分析:X86上的Android:性能与兼容可否兼得?
  
自从CES2012上Intel发布了针对移动市场的Medfield平台以来,市面上出现过一些基于X86的Android手机。它们甚至能在部分测试中实现单核战双核,双核战四核,那X86手机实际应用情况又真的是这么理想吗?

本文作者为爱搞机特约作者、技术达人“炮神”@ioncannon。

大部分Android应用都使用基于Dalvik Java代码开发。理论上,由于Dalvik代码在系统的虚拟机中执行,在x86的ATOM平台上不会有性能损失。但由于虚拟机执行效率的有限,对于一些高性能追求的应用,谷歌允许开发者使用原生的C语言代码。而原生代码是针对硬件平台编译,x86,ARM或是MIPS都有其相应的二进制文件。通常来说,针对ARM平台编译的二进制代码,x86的处理器是无法直接运行的。而主流的安卓产品均采用ARM处理器,尽管很早之前,Google的Android NDK就引入了x86编译的选项,但至今还是有相当一部分应用只针对ARM平台进行了编译,这就造成了x86安卓平台兼容性问题。
为了解决这一问题,Intel在推出Android手机系统的ATOM平台之初,就引入了“二进制转换”(Binary Translation)这一功能,来解决x86无法直接运行ARM库的问题。针对ARM编译的二进制代码会被ATOM处理器翻译成x86执行的代码,从而运行包含为ARM编译的原生代码的应用。

通过这一功能,x86 ATOM可以兼容市面上的绝大部分应用。最新的采用Atom Z2580处理器的联想K900已经宣传自己能兼容市场上的TOP 20000应用。
在解决了兼容性问题后,加上x86 Atom单核战双核、双核秒四核的彪悍性能(跑分),x86似乎已毫无黑点,横扫市场指日可待。但遗憾的是,x86所宣传的“兼容”与“性能”,由于目前的生态环境的限制,并不能兼得。
首先我们来简单的看一下目前x86在Android的生态环境情况:


尽管TOP 20000的应用已经可以被兼容,但个人统计了豌豆荚市场中最热门的250个应用,其中31%的应用没有使用原生代码。剩下的69%含有原生代码的应用中,只有8%包含了x86库,剩下61%只有ARM原生库。也就是说,只有这8%的应用,x86可以发挥自己的最佳性能,而绝大部分,都需要进行二进制转换去进行兼容。
进一步,在对性能需求较高的游戏应用中,原生代码的使用更加广泛。


通过统计当乐网中最热游戏TOP100,我们发现,只有6%的游戏不含原生库,胜于94%的游戏都含有原生代码。在这其中,只有5%的游戏含有x86原生库,剩余的将近90%的游戏,都需要Atom处理器通过二进制转换运行为ARM编译的代码。

当然,出于对高性能的需求,不少游戏都包含了armv7a的运行库。尽管如此,我手上的联想K800(Atom Z2460)手机也可以通过二进制转换进行执行。但是经过测试,包含Neon SIMD代码的原生库则无法执行。
说了这些,我们明白,相当一部分数量的应用都需要x86通过二进制转换去兼容ARM代码运行。那么,x86性能如此强悍,在兼容执行ARM代码时,表现又如何呢?这是长期以来为Intel和厂商所回避的一个问题。
本次测试对象:联想K800手机,算是首款在国内上市的x86手机。处理器为Atom Z2460 1.6GHz,单核双线程,PowerVR SGX540 400MHz GPU。

首先我们清楚安兔兔,这是x86最喜爱的跑分之一。

尽管Z2460只有单个核心,但其得分依旧超过了大部分低主频的双核ARM A9,相比高主频的双核A9/Krait毫不逊色。而采用双核四线程的Z2580更是能向着三万分冲击,直指目前最高端的4+4核处理器。
但是,使用ARMv7库后,Z2460的表现不容乐观,总分一下子缩水了三分之二,CPU得分更是跟单核A8差不多…

接下来的一系列测试也显示了同样的情况:当使用x86原生库时,我们可以发现ATOM的单线程性能异常强悍,特别是内存性能



而一旦采用兼容模式,二进制转换运行ARM库,性能就大大下降,1.6GHz的Atom甚至只有1GHz Cortex-A7的水平都不到。

CoreMark也是同样的情况,性能损失相当可观
作为兼容的代价,性能损失只是一方面。另一方面则是功耗的增加。在本文的前半部分已经展示过,目前热门游戏很少有x86原生库,为了方便对比测试,我们选取了幽灵古堡(Epic Citadel)应用作为游戏的代表。
Epic Citadel是一个基于虚幻引擎的demo,画面相当精美,光影特效也不错


本次测试我们使用Intel GPA System Analyzer来记录CPU的占用率和手机工作的电流

使用Epic Citadel自带的Benchmark场景进行测试,结果如下

使用x86原生库(上)获得了平均45.9FPS的成绩,而兼容ARM原生库成绩为31.2FPS,大概有30%的差距。
同时分析发现,整个过程中,通过二进制转换执行ARM库和原生运行x86库相比,CPU占用率和手机消耗电流上,均有一定的增加。


相比之下,兼容运行ARM库相比原生执行x86代码,成绩下降了30%,平均的CPU占用率从58.9%提高到了73.4%,而平均电流从621mA提高到了717mA,增加了约100mA,相对来说CPU的功耗增加了约400mW,还是相当可观的。
当然CPU占用率只是个侧面反映,由于测试时内核频率调节默认为Ondemand,尽管占用率差异不大,但二进制转换执行ARM代码时,CPU运行在高主频的时间更长,从而导致功耗的增加。
最后总结如下,可以看到二进制转换相比原生执行x86代码,损失的性能还是很可观的,在性能诉求的应用中,损失可高达50%以上。在一些游戏类应用中,也会带来约400mW的CPU功耗的增加。

总的来说,x86的Android之路还很漫长,尽管通过Intel和厂商的努力解决了兼容和性能问题,但相对恶劣的生态环境使得性能和兼容不可兼得。但遗憾的是,Intel在今年表示 “手机业务不图销量 只玩高端”“尽管市场上销量最大的是千元手机,但目前还不是英特尔的方向,英特尔旨在做出现在世界上性能最高的手机” ,在一定程度上,相对较低的占有率还是难以引起开发者的注意和调动开发者的积极性,在生态环境的改善上还是令人担忧。

本文来自ChinaUnix新闻频道,如果查看原文请点:http://news.chinaunix.net/opensource/2013/0512/2760617.shtml
作者: wolke    时间: 2013-05-13 11:14
这篇文章发表在1年前的话,还有点说服力。
用k900测试吧,好歹用个moto 788来测。
作者: 方兆国    时间: 2013-05-16 19:48
一谈到K900,让我默默地哭吧,买的太早,是K860,还不是K860i
作者: pitonas    时间: 2013-05-18 14:26
性能损失还是相当可观
作者: 方兆国    时间: 2013-05-18 16:31
pitonas 发表于 2013-05-18 14:26
性能损失还是相当可观


嗯,不过凭借Intel的技术以及声望,以后基于x86的应该会多一些,x86也会更加节能的
作者: pitonas    时间: 2013-05-19 09:09
方兆国 发表于 2013-05-18 09:31
嗯,不过凭借Intel的技术以及声望,以后基于x86的应该会多一些,x86也会更加节能的
嗯,Intel比较有诚意的。
作者: 方兆国    时间: 2013-05-19 10:09
pitonas 发表于 2013-05-19 09:09
嗯,Intel比较有诚意的。


而且Intel 技术也比较硬,毕竟是老牌CPU厂商
作者: pitonas    时间: 2013-05-23 11:52
方兆国 发表于 2013-05-19 03:09
而且Intel 技术也比较硬,毕竟是老牌CPU厂商

还有一两个比较有技术+诚意的。
作者: 方兆国    时间: 2013-05-23 13:42
pitonas 发表于 2013-05-23 11:52
还有一两个比较有技术+诚意的。


你是说德州仪器和英伟达吗
作者: chenyx    时间: 2013-05-28 20:41
在嵌入式Cpu领域,Intel还是小字辈,还需要继续努力才行
作者: 方兆国    时间: 2013-05-28 20:50
chenyx 发表于 2013-05-28 20:41
在嵌入式Cpu领域,Intel还是小字辈,还需要继续努力才行


话说现在新出的联想K900,用的就是Intel  Atom
作者: chenyx    时间: 2013-05-28 21:02
方兆国 发表于 2013-05-28 20:50
话说现在新出的联想K900,用的就是Intel  Atom

不管怎么说,Arm架构还是嵌入式主流,X86要想咱一席之地,还有很长的路.

作者: 方兆国    时间: 2013-05-28 21:03
chenyx 发表于 2013-05-28 21:02
不管怎么说,Arm架构还是嵌入式主流,X86要想咱一席之地,还有很长的路.


恩,这倒是,不过要是发展的话,很快的,就像iPhone
作者: chenyx    时间: 2013-05-28 21:05
苹果主要是硬件及软件的封闭,位特定硬件定制的系统,优化也容易.
作者: 方兆国    时间: 2013-05-28 21:11
chenyx 发表于 2013-05-28 21:05
苹果主要是硬件及软件的封闭,位特定硬件定制的系统,优化也容易.

恩,不过那样也很不错,像安桌这样乱七八糟的,电脑还不会乱扣费,手机可就不一样,用得不好,乱扣费
作者: chenyx    时间: 2013-05-28 21:13
恶意软件无处不在,科技永远是人类发展的双刃剑.
苹果的Appstore是很不错,国内用户还是越狱的多啊
作者: 方兆国    时间: 2013-05-28 21:14
chenyx 发表于 2013-05-28 21:13
恶意软件无处不在,科技永远是人类发展的双刃剑.
苹果的Appstore是很不错,国内用户还是越狱的多啊


国内用户越狱就是因为消费习惯的问题,舍不得花钱买应用
作者: 方兆国    时间: 2013-05-28 21:15
chenyx 发表于 2013-05-28 21:13
恶意软件无处不在,科技永远是人类发展的双刃剑.
苹果的Appstore是很不错,国内用户还是越狱的多啊


话说AppStore中就很少能够下载到那种恶意软件,顶多有个广告
作者: chenyx    时间: 2013-05-28 21:16
广告情有可原,广告泛滥就不是好消息了
作者: 方兆国    时间: 2013-05-28 21:18
chenyx 发表于 2013-05-28 21:16
广告情有可原,广告泛滥就不是好消息了


这肯定

以前一直感觉Android手机好
同学的iPhone 借来玩了几天,终于知道iPhone为什么那么贵,真心值
作者: ddd010    时间: 2013-05-28 21:20
如作者所言,中低端机才是主力。intel不在意这个市场,必然讨不了开发者的欢心。应用肯定也多不起来。。。

还是比较看好intel的,毕竟实力在哪儿。
作者: chenyx    时间: 2013-05-28 21:20
方兆国 发表于 2013-05-28 21:18
这肯定

以前一直感觉Android手机好

苹果的工业设计还是一流的.
同样的Android系统,三星的品质也不错.国内很多产品的工业设计太烂了.
作者: 方兆国    时间: 2013-05-28 21:22
ddd010 发表于 2013-05-28 21:20
如作者所言,中低端机才是主力。intel不在意这个市场,必然讨不了开发者的欢心。应用肯定也多不起来。。。
...


此言差矣,高端赚得钱更多,高端用户才会花费更多的钱

否则你让Apple情何以堪
作者: 方兆国    时间: 2013-05-28 21:24
chenyx 发表于 2013-05-28 21:20
苹果的工业设计还是一流的.
同样的Android系统,三星的品质也不错.国内很多产品的工业设计太烂了.


恩,不过三星下面的那个大按钮真心不爽
作者: chenyx    时间: 2013-05-28 21:28
任何事情,都不能让所有的人满意,这个是没有办法的事情.
作者: 方兆国    时间: 2013-05-28 21:32
chenyx 发表于 2013-05-28 21:28
任何事情,都不能让所有的人满意,这个是没有办法的事情.


这倒是,就像苹果的那个HOME键
作者: lbseraph    时间: 2013-05-28 21:42
那个Home键的设计出来后一堆跟风的。。。
作者: chenyx    时间: 2013-05-28 21:44
跟风是中国特色,国内没有创新意识
作者: ddd010    时间: 2013-05-28 22:23
方兆国 发表于 2013-05-28 21:22
此言差矣,高端赚得钱更多,高端用户才会花费更多的钱

否则你让Apple情何以堪



你的话很对,但是我只是在说市场,而不是说赚钱能力。
苹果不能复制。。

作者: 方兆国    时间: 2013-05-28 22:56
ddd010 发表于 2013-05-28 22:23
你的话很对,但是我只是在说市场,而不是说赚钱能力。
苹果不能复制。。


恩,这倒是,多数人还是用手机大电话上网什么的,也不需要配置特别好
作者: 方兆国    时间: 2013-05-28 22:58
lbseraph 发表于 2013-05-28 21:42
那个Home键的设计出来后一堆跟风的。。。


联想K860的home键是虚拟的

不过话说时间长了那个按键特别容易坏,iPhone也有一个虚拟的Home键,不过位置可以浮动,不固定
作者: 方兆国    时间: 2013-05-28 23:00
chenyx 发表于 2013-05-28 21:44
跟风是中国特色,国内没有创新意识


不过有个范本的话创新比较容易,毕竟国内集成电路这方面还比较薄弱,没有多少技术含量
作者: lbseraph    时间: 2013-05-28 23:06
跟风就永远没有创新,没有自己的特点~
作者: ddd010    时间: 2013-05-28 23:07
方兆国 发表于 2013-05-28 23:00
不过有个范本的话创新比较容易,毕竟国内集成电路这方面还比较薄弱,没有多少技术含量


高层本是好意,但是下面就不当回事。。。

各种胡扯 。。。
作者: 方兆国    时间: 2013-05-28 23:08
lbseraph 发表于 2013-05-28 23:06
跟风就永远没有创新,没有自己的特点~


可是有些时候没有一些依据,闭门造车也是没有成果的,有了模仿,一定程度上可以推进创新
作者: 方兆国    时间: 2013-05-28 23:10
ddd010 发表于 2013-05-28 23:07
高层本是好意,但是下面就不当回事。。。

各种胡扯 。。。


我不是很赞同
我相信一句古话——上梁不正下梁歪
不能简单地把责任推卸给基层的老百姓
作者: lbseraph    时间: 2013-05-28 23:11
那么多年了,国内还是这样子~这方面得学一下小日本,当年他们派人出去学摩托车技术,回来搞的那么好~
作者: ddd010    时间: 2013-05-28 23:14
方兆国 发表于 2013-05-28 23:10
我不是很赞同
我相信一句古话——上梁不正下梁歪
不能简单地把责任推卸给基层的老百姓


这个不关老百姓什么事,是那些只关心政绩的领导。。


作者: 方兆国    时间: 2013-05-28 23:18
lbseraph 发表于 2013-05-28 23:11
那么多年了,国内还是这样子~这方面得学一下小日本,当年他们派人出去学摩托车技术,回来搞的那么好~


这不就是先模仿后创新
作者: lbseraph    时间: 2013-05-29 10:23
看我说的重点~我也不是说反对模仿,是说看不出国内走向自己创新的趋势~
那么多年了,国内还是这样子~。。。

作者: 方兆国    时间: 2013-05-30 18:25
lbseraph 发表于 2013-05-29 10:23
看我说的重点~我也不是说反对模仿,是说看不出国内走向自己创新的趋势~


也对,不过模仿的最厉害的,腾讯进步也挺大的
作者: lbseraph    时间: 2013-05-30 21:33
看不出腾讯多大的创新,游戏要抄联众的模式~感觉它最大的创新就是把别人各种产品的功能集成在它下面了。
作者: 方兆国    时间: 2013-06-03 12:48
lbseraph 发表于 2013-05-30 21:33
看不出腾讯多大的创新,游戏要抄联众的模式~感觉它最大的创新就是把别人各种产品的功能集成在它下面了。


哈哈

不过他的WEB QQ 确实做得很炫,不过后果是网络不是很好的地方根本用不了那个web QQ
作者: pitonas    时间: 2013-06-25 01:30
lbseraph 发表于 2013-05-28 16:06
跟风就永远没有创新,没有自己的特点~

哈哈~我很赞同。。
作者: rover12421    时间: 2013-07-16 11:49
兼容不能做到100%
但是大部分还是可以的,很看好这个
最近就发现了一个好东西,Genymotion,Android超快的模拟器,他就是基于x86的,用了VBOX的内核,可以兼容arm的so,但是不能运行arm的bin文件,此为遗憾啊
作者: forgaoqiang    时间: 2013-08-09 17:23
感觉性能什么的都是浮云 作为小公司 又能够工作的程序才是最重要的 稍微卡点多消耗些用户的资源 还真无所谓。。。 是不是有些邪恶了~ 【纯运维角度,非程序员观点】
作者: 鬼谷子1110    时间: 2014-11-28 14:35
到今天,android5.0出来后,art相对来说执行效率很高了。不过目前bug也不少呢~




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2