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指令集),苹果的iPhone和iPad系列产品更是全程采用。在这后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最佳化的程式。
▲如果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执行。
▲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处理器的手机短。
▲以Asus ZenFone 5(版本号码ASUS_T00F_TW_user_20140327_4.3.2.935705)为例,笔者只有遇到Basemark X 1.1无法正确执行而已。
x86架构手机跑安卓好吗?(脑补)的更多相关文章
- x86架构的android手机兼容性问题
x86架构的android手机兼容性问题 http://www.cnblogs.com/guoxiaoqian/p/3984934.html 自从CES2012上Intel发布了针对移动市场的Medf ...
- ARM与X86架构的对决[整编]
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言 ...
- X86 架构和 ARM 架构
1.关于x86架构 X86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家 ...
- 基于x86架构的内核Demo的详细开发文档
http://hurlex.0xffffff.org/ 这里是hurlex这个基于x86架构的内核Demo的详细开发文档, 包含PDF文档和生成PDF的XeLaTex源码和文档每章节的阶段代码. 你可 ...
- ARM架构和X86架构对比
转载地址 我们就ARM架构的系统与X86架构系统的特性进行一个系统分析,方便用户在选择系统时进行理性.合理的比价分析. 一.性能: X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多.强得 ...
- php判断手机是安卓系统还是ios系统
最近项目,要判断用户的手机是安卓的还是ios的,搜了一下相关的资料,最终获得的结果.事实证明,是有效的!主要是要用到HTTP_USER_AGENT,它表示的意思是用来检查浏览页面的访问者在用什么操作系 ...
- X86架构
在接触BIOS的时候,都需要对PC架构有一定的认知.目前的PC架构绝大多数都是Intel的X86架构,貌似也是因为INTEL的这个X86架构早就了目前INTEL如日中天的地位. 废话不多说,X86架构 ...
- baidu手机浏览器安卓4.5版公布:由于快,所以爱
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUyMzk4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- kernel生成针对x86架构的tags和cscope数据库
最近下载了kernel的最新源码4.15版,但下载后的linux内核不仅包含了x86架构的函数还包含了如:arm.powerPC等等其他架构的函数,如果直接生成tags文件,将来查找时,多种架构的同名 ...
随机推荐
- composer 安装提示 PHP Warning: readfile(): SSL operation failed with code 1
这是php设置openssl 没有指定cacert.pem (证书) 第一步:下载 cacert.pem 文件下载地址 https://curl.haxx.se/docs/caextract.html ...
- 关于int,integer初始值问题
- 十二. 一步步破解JEB 2.0demo版二
编写脚本批量还愿JEB 加密字符串 解密完后效果如下: 脚本源码: https://github.com/bingghost/JebPlugins 思路: 下面的该封装的基本都封装了,过程如下: 1. ...
- Java批量文件打包下载
经常遇到选择多个文件进行批量下载的情况,可以先将选择的所有的文件生成一个zip文件,然后再下载,该zip文件,即可实现批量下载,但是在打包过程中,常常也会出现下载过来的zip文件中里面有乱码的文件名, ...
- python 单步调试初探(未完待续)
pdb 调试: import pdb pdb.set_trace() pudb 调试: http://python.jobbole.com/82638/
- Quartz资源收藏
项目中使用Quartz集群分享 : http://hot66hot.iteye.com/blog/1726143 发布 Quartz Job Scheduling Framework 中文 PDF 版 ...
- c# ContinueWith 用法
通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务.例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作.任务处理程序都不带参数或者带一个对象参数,而 ...
- 激活webstorm2016如何激活webstorm2016永久激活webstorm2016
没有那么麻烦,我这个方法是简单粗暴: 1.搜webstrom2016,最新的是2016.3 2.官方下载 3.断网,改本地时间,你打算用多久,就把本地时间往未来调多久 4.安装webstorm 5.一 ...
- oracle数据库安装完要做的事情。
安装数据库客户端.这个在oracle官网可以下载安装(下载链接) 安装PL/SQL PL在下载 配置环境变量(这个比较重要,不配置PLSQL链接不到数据库) 配置的相关环境变量有: 变量名:oracl ...
- for变量作用域(vc6与vs)
for变量:写在for循环初始语句中的变量.如:for (int i=1,j=2; i<100; i++) vc6的for变量 int i 的作用域: void func(bool condit ...