【arm版本是什么】理解ARM架构版本

当我们谈论“ARM版本”时,通常指的是ARM的架构版本(Architecture Version),而不是某个具体的CPU型号或核心。可以把它想象成一个蓝图或一套指令集规范。每一代新的ARM架构版本都会在前一代的基础上进行改进,引入新的功能、指令、性能提升和效率优化。

理解ARM架构版本非常重要,因为它直接影响到硬件的能力以及软件的兼容性。软件需要根据特定的ARM架构版本来编译,才能在对应的硬件上高效运行,甚至正常运行。

是什么:ARM架构版本与核心设计的区别

这一点经常被混淆。ARM架构版本(如ARMv8、ARMv9)是一套规范,定义了CPU应该如何执行指令、管理内存、处理中断等。而ARM核心设计(如Cortex-A76、Cortex-X1、Neoverse N2)是ARM公司或其授权伙伴(如苹果、高通、联发科)基于某个特定的ARM架构版本实现的具体CPU微架构。

打个比方:

  • ARMv8架构 就像一本“64位CPU设计手册”,规定了64位指令集(AArch64)和相关的特性。
  • Cortex-A53、Cortex-A73、Cortex-A76、Cortex-A78等等 都是遵循这本“手册”(ARMv8或其后续小版本)设计出来的不同“型号”的CPU核心。它们在功耗、性能、缓存大小等方面有不同的侧重和优化。
  • 更进一步,苹果的A系列(如A14、A15)或M系列(M1、M2)芯片,以及高通的Kryo系列、联发科的Dimensity系列芯片,它们内部的CPU核心是这些公司基于ARM架构许可证自行设计的,同样遵循某个特定的ARM架构版本(比如苹果的M系列基于ARMv8或ARMv9架构),但其微架构实现与ARM官方的Cortex系列不同。

所以,当说到“ARM版本”时,更准确的理解是它是指底层的架构版本

为什么:为什么需要不同的ARM架构版本?

主要驱动力是技术进步和市场需求:

  • 性能提升: 新的架构版本通常会引入更优化的指令集、更高效的执行单元设计,以提高计算速度。
  • 能效改进: 持续优化功耗是ARM架构的核心优势之一。新版本会引入更精细的电源管理技术和指令集优化,使得在完成相同任务时消耗更少的电量。
  • 新功能与特性: 为了适应新的计算需求,新架构会增加对特定任务的支持。例如,ARMv8引入了64位指令集(AArch64)和加强的加密扩展;ARMv9则进一步加强了安全性、引入了更强大的矢量扩展(SVE2)以加速机器学习和数字信号处理等。
  • 安全性增强: 随着计算任务越来越复杂,安全性变得尤为重要。新架构版本会集成硬件层面的安全特性。
  • 支持更大内存: 32位架构的内存寻址能力有限,引入64位架构是为了支持远大于4GB的物理内存,这对于服务器、高性能计算和大型应用至关重要。

总而言之,不同版本是为了让ARM架构能够持续进步,满足从微控制器、智能手机到服务器、高性能计算等不同领域日益增长的需求。

哪里:如何查看设备的ARM架构版本?

查看设备的具体ARM架构版本有时并不直观,因为操作系统或硬件信息报告的往往是CPU型号或核心名称,而不是直接写明“ARMv8.2”或“ARMv9.0”。不过,我们可以通过一些方法间接或直接地获取信息:

在Android设备上:

通常在“设置” -> “关于手机/平板电脑” -> “CPU”或“处理器信息”中,你会看到CPU的型号,比如“Qualcomm Snapdragon 8 Gen 1”或“MediaTek Dimensity 9000”。
要确定其具体的ARM架构版本,可能需要:

  • 查阅该CPU型号的技术规格表。比如,Snapdragon 8 Gen 1使用的是Cortex-X2、Cortex-A710、Cortex-A510等核心,这些核心都是基于ARMv9架构的。
  • 使用第三方硬件信息查看应用,如CPU-Z等。这些应用通常能提供更详细的CPU信息,包括指令集和架构类型(AArch64通常意味着ARMv8或更新)。

在iOS/iPadOS设备上(iPhone/iPad):

苹果使用自己设计的基于ARM架构的芯片(A系列和M系列)。苹果通常不公开说明其芯片基于ARM的哪个具体架构版本(如v8或v9),而是直接提供芯片名称(如A15 Bionic, M2)。这些芯片毫无疑问实现了最新或较新的ARM架构指令集和特性,但用户无法像Android那样直接在设置里看到“ARMvX”。

在Linux系统上(包括树莓派等ARM板卡):

这是最容易通过命令行查看的地方:

  • 打开终端。
  • 输入命令 lscpu
    在输出信息中查找 “Architecture”(架构)和 “CPU op-mode(s)”(CPU操作模式)。如果看到 “aarch64″,这表示CPU支持64位ARM架构,也就是ARMv8或更新的版本。输出中可能还会显示 “CPU family” 或 “Model name”,这些信息有助于你进一步确定具体的核心型号和对应的架构版本。
  • 输入命令 uname -m
    输出如果是 `aarch64`,同样表示64位ARM架构。
    输出如果是 `armv7l` 或 `armhf`,则表示是32位ARMv7架构。
  • 输入命令 cat /proc/cpuinfo
    可以查看更详细的CPU信息,包括 Processor、model name、Features(支持的指令集特性)等,这些特性(如 fp, asimd, sve)可以间接反映架构版本。

在Windows on ARM设备上:

在“设置” -> “系统” -> “关于”中,在“设备规格”下可以看到处理器型号。该型号是基于ARM架构的(如Snapdragon系列)。其具体的ARM架构版本同样需要通过查阅该处理器型号的技术规格来确定。

多少:主要的ARM架构版本有哪些?

ARM架构发展了多个版本,但目前在主流计算设备(智能手机、平板、笔记本、服务器)上常见的主要是:

  1. ARMv7-A: 这是前一代主流的32位应用处理器架构。虽然仍在一些较老的或低成本嵌入式设备中使用,但在智能手机等领域已基本被取代。
  2. ARMv8-A: 这是一个划时代的版本,首次引入了64位指令集AArch64,同时保留了对32位指令集AArch32的兼容。当前绝大多数智能手机、平板、Chromebook、以及越来越多的笔记本电脑和服务器都基于ARMv8或其后续的小版本(v8.1, v8.2, v8.3, v8.4, v8.5, v8.6, v8.7, v8.8, v8.9)。每个小版本都会增加一些新的指令或特性,比如加强对虚拟化、机器学习加速、内存管理等的支持。
  3. ARMv9-A: ARM公司于2021年推出的最新一代架构。它在ARMv8的基础上进一步提升,特别强调了安全性(Arm Confidential Compute Architecture, CCA)AI/ML性能(通过增强的Scalable Vector Extension 2, SVE2)以及整体性能的跃升。ARMv9同样有后续的小版本(v9.1, v9.2等),不断增加和优化特性。目前高端智能手机芯片和新一代服务器芯片开始采纳ARMv9架构。

除了A-profile(应用处理器)外,还有R-profile(实时处理器,如ARMv7-R, ARMv8-R)和M-profile(微控制器,如ARMv6-M, ARMv7-M, ARMv8-M, ARMv8.1-M),它们针对不同的应用场景有不同的架构特性和版本体系,但在我们通常讨论“手机芯片是哪个ARM版本”时,主要聚焦于A-profile。

如何/怎么:新ARM架构版本如何带来改进?

新版本的改进是多方面的,主要体现在以下几个层面:

  • 指令集扩展: 新版本会增加新的指令,这些指令可以更高效地完成特定任务。例如,ARMv8引入了更多的加密指令,ARMv9增强了矢量计算指令(SVE2),这使得运行加密算法、执行机器学习推理等任务时,CPU可以用更少的周期完成更多工作。
  • 微架构优化(核心设计者实现): 虽然架构定义了指令集,但核心设计者(ARM Cortex团队或第三方)会根据新架构的规范,改进CPU内部的流水线、分支预测、缓存系统、乱序执行能力等。这些微架构的改进直接影响到CPU在单位时间内能执行多少条指令以及执行效率。
  • 系统级特性: 新架构版本会定义或增强对系统级组件的支持,比如内存管理单元(MMU)的能力、中断控制器的接口、新的电源管理状态、增强的虚拟化支持等。
  • 安全性特性: 集成硬件层面的安全机制,如内存标记、机密计算支持等,帮助抵御某些类型的软件攻击,保护敏感数据。

这些改进共同作用,使得基于新架构版本的CPU在相同频率下通常比基于旧版本的CPU性能更高、能效更好,并具备处理新类型工作负载的能力。

软件如何适配不同的ARM版本?

软件开发者在编译程序时,会指定目标ARM架构版本和(或)核心型号。编译器(如GCC, Clang)会根据这些信息,生成包含对应指令集的机器码。

  • 使用 `-march=` 编译选项指定目标架构版本,例如 `-march=armv8-a`, `-march=armv9-a`。
  • 使用 `-mcpu=` 编译选项指定目标CPU核心型号,例如 `-mcpu=cortex-a78`。编译器会针对该核心的微架构特点进行优化,并包含该核心支持的指令集(由其实现的架构版本决定)。

为了确保软件能在不同版本的ARM硬件上运行,开发者有时会:

  • 编译出支持多个架构版本的二进制文件(例如,早期Android应用可能同时包含armeabi-v7a和arm64-v8a的代码)。
  • 为旧架构版本提供兼容模式(例如,ARMv8/v9 CPU可以在AArch32模式下运行32位ARMv7程序)。但这通常会有性能损失,并且无法使用新架构独有的指令。
  • 依赖操作系统或运行时环境进行指令转换或优化(较少见,且性能开销大)。

因此,软件的兼容性和性能与硬件的ARM架构版本紧密相关。一款为最新ARMv9架构优化的应用,在较老的ARMv7设备上将无法运行(因为指令集不支持),而在ARMv8设备上运行可能不会充分发挥其潜力(无法使用ARMv9新增的特性)。

总结

理解“ARM版本”的关键在于区分架构版本(如ARMv8, ARMv9)核心设计(如Cortex-A78, Apple A15)。架构版本是底层的规范和指令集定义,是技术发展的里程碑;而核心设计是具体实现这些规范的物理形态。不同的版本代表了计算能力、效率和功能集合的演进,直接影响到我们设备的性能、能耗以及软件的兼容性。通过一些系统工具或第三方应用,我们可以大致判断设备所基于的ARM架构类型(32位或64位,以及大致的代际)。


By admin

发表回复