美文网首页android高级
手机CPU相关的知识

手机CPU相关的知识

作者: 无敌麦子地 | 来源:发表于2018-09-26 22:37 被阅读42次

    学习手机cpu相关知识,对于开发Android应用程序适应各个机型有一定的辅助作用。当我们了解了背后的原理和逻辑后,在开发过程中或许能达到事半功倍的效果。

手机架构体系分类

    指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分

    早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,可能只需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。

    RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。

    简单地说就是,CISC将指令集成,机器理解起来简单,但集成电路的设计复杂度提高,而RISC则恰恰相反,二者各有优劣,有各自适应的场景。

●复杂指令集(CISC)代表架构是x86

●精简指令集(RISC)代表架构是ARM和MIPS

●ARM架构代表手机品牌:高通骁龙、华为海思、NVIDIA Tegra 4(M3)、德州仪器 armeabi-v7a 

●MIPS架构的处理器多用在网关、猫、机顶盒等低端小众的产品,我过的“龙芯”使用了这种架构,代表手机品牌有艾诺novo7

●X86的代表手机品牌:联想K800、K900,摩托罗拉MT788、Orange San Diego(Xolo X900)

手机CPU各大厂商

德州仪器Intel高通三星Marvell(马维尔)、Nvidia(英伟达)华为联发科(MTK)、展讯等

相关文章:

https://www.jianshu.com/p/ed0acc4f2af1

    开发Android应用时,有时候Java层的编码不能满足实现需求,就需要到C/C++实现后生成SO文件,再用System.loadLibrary()加载进行调用,这里成为JNI层的实现。常见的场景如:加解密算法,音视频编解码等。

    在生成SO文件时,需要考虑适配市面上不同手机CPU架构,而生成支持不同平台的SO文件进行兼容。

    目前Android共支持七种不同类型的CPU架构,分别是:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起)

Android支持的CPU架构

●如何查看手机的CPU架构

adb shell

cat /proc/cpuinfo

    如下图,查询的结果中aarch64是arm64-v8a的一种执行状态,也就是说该手机的CPU是arm64-v8a架构

    Android系统目前支持的七种不同的CPU架构,每一种都关联着一个相应的ABI。即应用程序二进制接口(Application Binary Interface),其定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上, 可以非常精确地定义应用的机器代码在运行时如何与系统交互。

CPU与SO的兼容

    每一个CPU架构对应一个ABI,一个cpu属于某一种架构,如果你要完美兼容所有类型的手机,理论上是要在的libs目录下放置各个架构平台的SO文件,但是apk的体积会变得非常庞大,对于CPU来说,不同的架构并不意味着一定互不兼容,根据目前Android共支持七种不同类型的CPU架构,其兼容特点可总结如下:

●armeabi设备只兼容armeabi;

●armeabi-v7a设备兼容armeabi-v7a、armeabi;

●arm64-v8a设备兼容arm64-v8a、armeabi-v7a、armeabi;

●X86设备兼容X86、armeabi;

●X86_64设备兼容X86_64、X86、armeabi;

●mips64设备兼容mips64、mips;

●mips只兼容mips

根据以上的兼容总结,我们还可以得到一些规律:

●armeabi的SO文件基本上可以说是万金油,它能运行在除了mips和mips64的设备上,但在非armeabi设备上运行性能还是有所损耗;

●]64位的CPU架构总能向下兼容其对应的32位指令集,如:x86_64兼容X86,arm64-v8a兼容armeabi-v7a,mips64兼容mips;

    当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。在x86设备上,libs/x86目录中如果存在.so文件的话,会被安装,如果不存在,则会选择armeabi-v7a中的.so文件,如果也不存在,则选择armeabi目录中的.so文件(因为x86设备也支持armeabi-v7a和armeabi)。

    安装apk的时候,会把对应的abi目录进行简化,如下图,可以在apk的安装目录进行对比查看。

    从目前移动端CPU市场的份额数据看,ARM架构几乎垄断,所以,除非你的用户很特殊,否则几乎可以不考虑单独编译带入X86、X86_64、mips、mips64架构SO文件。

这一部分可以参考以下文章:

https://www.jianshu.com/p/cb15ba69fa89

相关文章

  • 手机CPU相关的知识

    学习手机cpu相关知识,对于开发Android应用程序适应各个机型有一定的辅助作用。当我们了解了背后的原理和逻辑后...

  • 手机CPU架构体系分类及各大厂商

    手机cpu相关知识,这对于开发Android应用程序适应各个机型有一定的辅助作用. 手机cpu架构体系分类 指令集...

  • CPU相关知识

    以下截图及相关信息,均来源于马士兵公开课中 CPU相关知识 进程:CPU分配资源的基本单位线程:CPU执行的基本单...

  • cpu相关

    一、时钟周期、机器周期、指令周期的概念及三者之间的关系 时钟周期时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以...

  • armeabi与armeabi-v7a的一些知识

    1、手机cpu架构。 讲到armeabi就不得不讲手机cpu了。电脑有电脑的cpu,手机也有手机的cpu。cpu有...

  • Android 多CPU架构支持相关知识

    说到智能手机的性能好不好,我们通常最会想到的就是它的处理器(cpu),目前市场上最为常见的生产商有英伟达、高通、华...

  • Android高手笔记 - 卡顿优化

    如何定义发生了卡顿现象: 线下很难复现,与发生场景强相关(所以需要我们去做卡顿监控,收集现场信息) CPU相关知识...

  • Android性能测试之cpu占用率

    测试时,经常会发生手机的CPU使用率过高而引发的问题。那接下来,我对这方面知识做些整理及归纳:CPU利用率:CPU...

  • CPU相关的操作

    大多数工作在Core Animation的CPU都发生在动画开始之前。这意味着它不会影响到帧率,所以很好,但是他会...

  • 性能监控:shell脚本获取cpu/内存/IO数据

    CPU相关数据

网友评论

    本文标题:手机CPU相关的知识

    本文链接:https://www.haomeiwen.com/subject/ktfsoftx.html