android-Android芯片架构分析

android-Android芯片架构分析


前篇


最简单的概括:

ARM 架构注重的是续航能力;

x86 架构注重的是性能。

众所周知,对于我们使用的移动设备来说,续航能力是产品的生命线。一个好的手机如果续航能力不足,那么会极大的影响用户体验甚至销量。所以 Android 手机目前还是 arm 架构占绝对主流,据市场调研,目前 90% 的 Android 手机都是 arm 架构的。例如我们在选购手机时会常常听到或看到的:高通骁龙、联发科以及苹果在内的 CPU 基本都是 arm 架构。x86 架构的 CPU 多数应用在平板电脑上,比如小米平板 2。

可以说到目前为止我们使用的大部分移动设备「智能手机,平板……等」和大部分的移动终端「超市消费时候刷卡的 pos 机、ATM 等」都是 arm 架构的 cpu,因为它们更需要续航能力。而部分平板电脑和大部分的台式机和笔记本电脑,则是使用 x86 架构的 CPU「Intel 家的 CPU」,因为这些设备更需要的是高性能的运转和高效的运算,而对续航能力不做过高要求。说到这里相信您也应该知道如何做出选择了吧!

  • armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.

    比如: LG AKA,

  • arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。

    比如: 华为 P10 Plus, vivo Y33,

  • armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。

  • x86: 平板、模拟器用得比较多。

  • x86_64: 64位的平板。


ABI是什么?

ABI是Application Binary Interface的缩写,常表示两个程序模块之间的接口,且其中一个模块常为机器码级别的library或操作系统。它定义了函数库的调用、应用的二进制文件(尤其是.so)如何运行在相应的系统平台上等细节。

应用安装到设备时,只有该设备的CPU架构支持的最优so库才会被安装。
如:x86架构的设备支持x86、armeabi-v7a和armeabi等ABI。但优先级从高到低依次为x86、armeabi-v7a、armeabi。系统会根据此顺序寻找首个可用的最优的so库,找到则结束。

x86设备包含ARM模拟层,能够很好地运行ARM类型的so库,但并不保证100%不发生Crash。
64位设备(arm64-v8a, x86_64, mips64)能够运行32位的so库。但是以32位模式运行时,会丢失专为64位优化过的性能特征(ART, WebView, Media, etc.)。
ABI比较:

mips/mips64:极少用于手机,出发点是高性能,主要用于路由器、猫。

x86/x86_64:x86架构的手机的市场占有率很低,约为1%左右。而且x86架构都包含ARM模拟层,兼容ARM类型的ABI。注意,模拟器为x86架构。

arm64-v8a:64位ARM架构。可用32位模式运行armeabi-v7a和armeabi。(所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的)

armeabi-v7a:主流版本AMRv7,2011年15月以后的生产的大部分Android设备都使用它。

armeabi:老版本ARMv5,不支持硬件辅助浮点运算,支持所有的 ARM* 设备。。


查看手机芯片架构

  1. 手机开启调试模式, 接上pc, 输入 adb 指令. (华为 P10 Plus)

    1
    2
    $ adb shell getprop ro.product.cpu.abi
    arm64-v8a