测试开发工程师需要知道的 Android和iOS CPU架构基础知识

599 阅读3分钟

“这是我参与8月更文挑战的第12天,活动详情查看: 8月更文挑战

类型

CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型的CPU,下面是几个常见的类型:

  • ARM公司: arm架构 
  • Intel公司: x86和x86-64系列架构 
  • AMD公司: x86和x86-64系列架构

其中电脑PC一般是用Intel和AMD公司的x86和x86-64系列的CPU,手机一般是用arm的CPU,主要是因为arm处理器功耗低、体积小、非常适合手机这种嵌入式设备的使用场景。 

iOS

armv7、armv7s、arm64、arm64e这些都是ARM处理器的指令集,下面看一下iOS真机和模拟器的CPU架构区别:

模拟器

  • i386:32位模拟器
  • x86-64:64位模拟器

真机

  • arm64e :64位处理器,例如:iPhone XS | iPhone XS Max | iPhone XR | iPhone 11 | iPhone 11 Plus | iPhone 12 等新一代机型
  • arm64:64位处理器,例如:iPhone 5S | iPhone 6 | iPhone 6 Plus | iPhone 6S | iPhone 6S Plus | iPhone 7 | iPhone 7 Plus | iPad (2018) | iPhone 8 | iPhone 8 Plus | iPhone X
  • armv7s:32位处理器,例如:iPhone 5|iPhone 5C|iPad4(iPad with Retina Display)
  • armv7:32位处理器,例如:iPhone 4|iPhone 4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4

Android

在讲Android的CPU架构前先来看看ABI的概念,想必很多端上的测试开发同学在日常工作中都有听业务研发提到过Android应用ABI的支持情况。

ABI简介

不同的Android手机使用不同的CPU,而不同的CPU又支持不同的指令集,CPU 与指令集的每种组合都有专属的应用二进制接口,也就是我们上面提到的ABI。

CPU架构和ABI的关系

应用程序二进制接口(Application Binary Interface)定义了二进制文件,特别是.so文件如何运行在相应的系统平台上(从使用的指令集、内存对齐到可用的系统函数库等),在Android系统上,每一个CPU架构都对应一个ABI:armeabi,armeabi-v7a,arm64-v8a,x86,mips,mips64,x86_64。

CPU架构

目前主要有以下几种CPU架构:

  • ARMv5:第5、6代的32位ARM处理器,缺少对浮点数计算的硬件支持,使用软件浮点运算,在需要大量计算时有性能瓶颈,虽然速度慢,但通用性强,支持的ABI类型:armeabi;
  • ARMv7:第7代的32位ARM处理器,是目前的主流版本,使用硬件浮点运算,具有高级扩展功能,支持的ABI类型:armeabi-v7a 和 armeabi;
  • ARMv8:第8代的64位ARM处理器,支持的ABI类型:arm64-v8a、armeabi-v7a和armeabi(可用32位模式运行armeabi-v7a和armeabi);
  • x86:32位intel处理器,一般用于平板和模拟器,支持的ABI类型:armeabi(性能有所损耗) 和 x86;
  • x86_64:64位intel处理器,一般用于平板和模拟器,支持的ABI类型:x86 和 x86_64;
  • MIPS/MIPS64:极少用于手机可以忽略,支持的ABI类型:mips和mips64;

注意:在最新的Mac M1系列电脑上也可以运行ARM的模拟器了,CPU架构类型为arm64-v8a