引言
在当今智能设备无处不在的时代,ARM(Advanced RISC Machines)处理器凭借其高性能、低功耗的特性,成为智能手机、物联网设备、汽车电子等领域的核心引擎。作为精简指令集(RISC)的典范,ARM核通过独特的架构设计和技术创新,重塑了芯片产业的格局。
本文将从技术特点、工作模式、发展历程等方面,全面解析ARM核的核心竞争力。
CPU内核概述
CPU(Central Processing Unit,中央处理器)是计算机或其他电子设备的核心部件,主要负责执行程序指令、处理数据和控制计算机的其他硬件部件。
CPU的主要组成部分
控制单元(Control Unit, CU)控制单元负责从内存中读取指令,并将其解码为一系列控制信号,以指导其他部件完成相应的操作。它还负责管理指令的执行顺序和流程。
算术逻辑单元(Arithmetic Logic Unit, ALU)ALU是CPU的核心部分,负责执行所有算术运算(如加法、减法、乘法、除法)和逻辑运算(如与、或、非、异或)。它的性能直接影响CPU的整体处理能力。
寄存器组(Registers)寄存器是CPU内部的高速存储单元,用于暂存指令、数据和地址。常见的寄存器包括:
- 状态寄存器(如CPSR、SPSR):存储CPU的状态信息。
- 程序计数器(PC):存储下一条要执行的指令的地址。
- 指令寄存器(IR):存储当前正在执行的指令。
- 通用寄存器(如R0-R15):用于存储用户数据和中间结果。
缓存(Cache)缓存是位于CPU和主内存之间的高速存储器,用于减少CPU访问内存的延迟。缓存通常分为一级缓存(L1 Cache)和二级缓存(L2 Cache),有些CPU还配备了三级缓存(L3 Cache)。缓存的大小和速度对CPU的性能有重要影响。
总线接口单元(Bus Interface Unit, BIU)BIU负责管理CPU与外部设备(如内存、输入输出设备)之间的数据传输。它通过总线与这些设备通信,确保数据的高效传输。
CPU的分类:
按字长分类
- 8位微处理器:早期的微处理器,例如Intel 8080,主要用于简单的嵌入式系统。
- 16位微处理器:例如Intel 8086,是早期个人计算机(如IBM PC)的核心部件。
- 32位微处理器:例如Intel Pentium系列、ARM Cortex-A系列,广泛应用于现代计算机和移动设备。
- 64位微处理器:例如Intel Core系列、AMD Ryzen系列、苹果M系列芯片,支持更大的内存寻址空间和更高的性能,是当前主流的处理器架构。
按架构分类
- CISC(Complex Instruction Set Computer):复杂指令集计算机,指令集庞大且复杂,单条指令可执行多步操作(如内存存取、算术运算、逻辑判断等),直接支持高级语言操作。
- RISC(Reduced Instruction Set Computer):精简指令集计算机,指令集简洁且长度固定,通过组合简单指令完成复杂任务,强调硬件流水线优化和单周期指令执行。
CPU的主要性能指标
-
主频(Clock Speed)
主频是指CPU的时钟频率,单位是赫兹(Hz)。主频越高,CPU在单位时间内可以执行的指令数量越多。例如,3.5 GHz的CPU每秒可以执行35亿次时钟周期。
-
核心数(Cores)
现代CPU通常包含多个核心(多核处理器),每个核心都可以独立执行指令。多核处理器可以提高多任务处理能力和并行计算能力。例如,四核处理器可以同时处理四个任务,而八核处理器可以处理更多任务。
-
缓存大小(Cache Size)
缓存的大小直接影响CPU访问数据的速度。较大的缓存可以减少CPU访问主内存的次数,从而提高性能。例如,L1缓存通常为几十KB,L2缓存为几百KB到几MB,L3缓存为几MB到几十MB。
-
功耗(Power Consumption)
CPU的功耗是衡量其能效的重要指标。低功耗的CPU更适合移动设备和嵌入式系统,而高性能的CPU通常功耗较高,适合桌面计算机和服务器。
CPU架构
ARM架构:
ARM架构的特点:
- 指令简单高效:ARM架构采用精简指令集,指令数量少且简单,大多数指令在一个时钟周期内完成,提高了处理器的执行效率。
- 低功耗设计:ARM架构注重低功耗,特别适合移动设备、嵌入式系统和物联网设备,能够在较低功耗下提供较高的计算性能。
- 高集成度:ARM芯片通常采用SoC(System on Chip)设计,将CPU、GPU、通信模块、存储控制器等多种功能集成在同一芯片上,降低了成本和设备尺寸。
ARM架构的形成:
ARM架构最初由Acorn计算机公司在1985年开发,用于其个人计算机。1990年,Acorn与苹果和VLSI Technology合作成立了ARM公司(Advanced RISC Machines)。1991年,ARM公司推出了第一款商业化的ARM架构处理器——ARM6。
发展:
-
Cortex系列:2005年,ARM公司推出了Cortex系列处理器,分为A、R和M三个系列,分别针对不同的市场:
-
Cortex-A系列:应用程序型处理器,适用于智能手机、平板电脑和服务器。
-
Cortex-R系列:实时型处理器,适用于嵌入式系统和实时应用。
-
Cortex-M系列:微控制器型处理器,适用于微控制器和物联网设备。
-
-
ARMv8架构:2011年,ARM公司推出了ARMv8架构,支持64位计算,进一步提升了性能和能效。
-
ARMv9架构:2021年,ARM公司推出了ARMv9架构,支持人工智能、机器学习和安全特性,为未来的高性能计算和物联网应用奠定了基础。
ARM公司不直接生产芯片,而是将其架构授权给其他公司,允许它们在ARM架构基础上设计和制造处理器。这种模式使得ARM架构能够快速扩展到多个领域,并形成了丰富的生态系统。
SoC(System on Chip)
MIPS架构
MIPS(Million Instructions Per Second)是由美国MIPS技术公司开发的RISC(精简指令集)架构,专注于高性能32/64位处理器设计,强调指令效率与低功耗。
技术特点:
- 高效流水线:支持5级流水线,优化指令吞吐量。
- 可扩展性:提供MIPS32(32位)与MIPS64(64位)版本,适应不同计算需求。
- 多线程支持:部分型号支持多线程技术(如MIPS MT),提升并行处理能力。
IP授权模式:与ARM类似,授权处理器内核设计给第三方厂商(如龙芯、联发科)。
PowerPC架构
PowerPC(Performance Optimization With Enhanced RISC)是IBM联合苹果、摩托罗拉开发的RISC架构,源自IBM POWER系列,强调高性能与实时性。
技术特点
- 超标量设计:支持多指令并行发射,提升计算效率。
- 高可靠性:内置ECC校验与冗余设计,适用于关键任务场景。
- 灵活扩展:支持AltiVec向量指令集(类似SIMD),加速多媒体处理。
代表厂商
- IBM:Power系列处理器主导高端服务器市场。
- 恩智浦(NXP):QorIQ T系列用于汽车网络与网关控制器。
Intel x86架构
x86是Intel主导的CISC(复杂指令集)架构,以高复杂度指令与向后兼容性著称,长期统治PC与服务器市场。
技术特点
- 复杂指令集:单指令可完成内存操作、算术运算等多步任务。
- 微指令转换:现代x86处理器将CISC指令拆解为类RISC微指令(μops),提升执行效率。
- 多核与超线程:支持多核并行与超线程技术(如Intel Hyper-Threading)。
RISC-V架构
RISC-V是加州大学伯克利分校开发的第五代开源RISC架构,以模块化设计打破专利壁垒,允许自由定制与免授权费使用。
技术特点
- 模块化指令集:基础指令集(RV32I/RV64I) + 可选扩展(如浮点、向量、加密)。
- 精简高效:固定长度指令(32/64位)与单周期执行,适合低功耗场景。
- 开放生态:全球社区协作推动工具链(GCC、LLVM)与OS(Linux、FreeRTOS)适配。
代表厂商
平头哥半导体:玄铁系列芯片赋能阿里云IoT与AI基础设施。
SiFive:提供RISC-V IP核定制服务,客户包括NASA与SK海力士。
ARM架构版本及特点
内核版本
ARMv1: 最早的ARM架构版本,主要用于简单的32位设备。
ARMv2: 增加了乘法指令,改进了性能。
ARMv3: 支持32位内存地址空间,增加了长乘法指令。
ARMv4: 引入了Thumb指令集,优化了代码密度。
ARMv5: 增加了Jazelle DBX技术,支持Java字节码执行。
ARMv6: 支持SIMD指令,改进了多媒体处理能力。
ARMv7: 引入了TrustZone技术,增强了安全性。
ARMv8: 支持64位计算,提升了性能和内存寻址能力。
ARMv9: 最新版本,增强了安全性和AI处理能力。
ARMv7-A/R:
TrustZone 安全扩展:一种安全技术,提供了硬件级别的安全隔离,用于保护敏感数据和代码,支持安全支付和设备管理等应用。
VFPv3/v4 浮点运算:向量浮点处理器的第三版和第四版,提供了更高性能的浮点运算能力。
NEON SIMD 加速:NEON(New Embedded Operating Narrow)是ARM的SIMD扩展,用于加速多媒体和信号处理任务。
A32/T32 指令集:A32是ARM的32位指令集,T32是Thumb-2指令集的32位版本,两者都旨在提高代码密度和性能。
Scalar FP (SP/DP):标量浮点运算,支持单精度(SP)和双精度(DP)浮点数。
ARMv8-A:
AArch64 (64位支持):ARM的64位架构,提供了更大的地址空间和更高的性能。
A64 指令集:ARMv8-A的64位指令集,支持更复杂的计算任务。
Adv SIMD (SP+DP Float):高级SIMD扩展,支持单精度和双精度浮点运算,用于高性能计算。
虚拟化扩展 (Hyp模式):提供了虚拟化支持,允许在单个物理处理器上运行多个操作系统实例。
CRYPTO 加密指令集:提供了硬件加密和解密指令,增强了数据安全性。
ARMv9:
SVE2 向量扩展:可扩展向量扩展(Scalable Vector Extensions)的第二版,提供了更高性能的向量处理能力,适用于高性能计算和机器学习。
机密计算架构:增强了安全性,提供了保护数据和代码免受未授权访问的机制。
增强AI加速:针对人工智能和机器学习工作负载进行了优化,提高了AI应用的性能。
Thumb技术
-
Thumb模式:ARM处理器的一种16位指令模式,旨在提高编码密度,减少内存占用,特别是在内存带宽有限的嵌入式系统中。ARM指令集是32bit的指令集,在Thumb模式执行的指令集是16bit的。Thumb指令集不是完整的指令集,它是ARM指令集的子集。但是Thumb 指令具有更高的代码密度,即占用存储空间小,仅为ARM代码规格的65%,但其性能却下降的很少。所 以,Thumb指令集使ARM处理器能应用到有限的存储带宽,并且,代码密度要求很高的嵌入式系统中去。
-
ARM7TDMI:首款支持Thumb技术的处理器。
-
ARM9及后续系列:包括XScale,都集成了Thumb技术。
Thumb-2技术
-
ARM1156核心:Thumb-2技术首次出现,扩展了Thumb指令集,增加了32位指令,提高了性能。
-
目标:结合Thumb的编码密度和ARM指令集的性能。
Jazelle技术
-
ARM926EJ-S:首款支持Jazelle技术的处理器,以字母'J'标示。
NEON (Advanced SIMD)技术
-
进阶SIMD扩展集:提供64和128位的SIMD指令集,加速多媒体和信号处理。
VFP (Vector Floating-point Coprocessor for ARM)技术
ARM架构中用于增强浮点运算能力的协处理器。它提供单精度和双精度浮点运算能力,完全兼容ANSI/IEEE Std 754-1985二进制浮点算术标准。VFP技术主要应用于需要浮点运算的领域,如PDA、智能手机、语音压缩与解压、3D图像处理、数字音效、打印机、机顶盒和汽车应用等。
-
SIMD支持:有助于降低编码大小并提高效率。
-
VFPv2是针对ARMv5TE、ARMv5TEJ和ARMv6体系结构中ARM指令集的可选扩展。VFPv3则是对ARMv7-A和ARMv7-R配置文件中ARM、Thumb和ThumbEE指令集的可选扩展,实现了32个或16个双字长寄存器。VFPv4或VFPv4-D32在Cortex-A12和A15 ARMv7处理器上实现,并且Cortex-A7可选地在具有Neon的FPU情况下拥有VFPv4-D32。VFPv4增加了半精度支持作为存储格式以及融合乘加指令。
安全性扩展TrustZone
ARM核工作模式
Privilege level(权限级别)
安全状态(Secure State)
特权级别划分:
PL0:仅 User模式(运行非特权应用程序)。
PL1:除User模式外的 所有其他模式(如FIQ、IRQ、Supervisor等)
非安全状态(Non-secure State)
特权级别划分:
PL0:User模式(非特权应用程序)。
PL1:除User和Hyp外的所有模式(如FIQ、IRQ、Supervisor等)。
PL2:Hyp模式(需支持虚拟化扩展,Hypervisor专用)。
ARM 处理器核的工作模式(Processor Modes)是其架构的重要特性之一,用于支持不同的权限级别和异常处理机制。
FIQ(快速中断模式)
IRQ(普通中断模式)
Supervisor(管理模式)
Monitor(监视器模式)
Abort(中止模式)
Hyp(虚拟机管理模式)
With Security Extensions(需要安全扩展)
With Virtualization Extensions(需要虚拟化扩展)
正常模式(Normal Modes)
用途:处理常规任务或中断。
User模式(usr):
特点:
运行应用程序的非特权代码,无法直接访问硬件资源。
通过系统调用(
SVC
指令)切换到特权模式(如Supervisor模式)。支持安全(Secure)和非安全(Non-secure)状态。
System模式(sys):
特点:
使用与User模式相同的寄存器组,但运行特权级代码(如操作系统内核任务)。
适用于需要低权限但需访问特权资源的场景。
异常模式(Exception Modes)
用途:处理硬件异常、中断或安全扩展功能。
FIQ模式(fiq):
特点:
处理高优先级中断(Fast Interrupt Request),响应速度最快。
拥有专用寄存器(R8-R14),减少上下文保存开销。
适用于实时性要求高的外设(如DMA控制器)。
IRQ模式(irq):
特点:
处理普通中断(Interrupt Request),优先级低于FIQ。
自动保存部分寄存器状态,便于快速恢复执行流。
Supervisor模式(svc):
特点:
默认的复位启动模式,处理系统调用(
SVC
指令)。操作系统内核的核心运行环境,可访问所有系统资源。
Abort模式(abt):
特点:
处理内存访问异常(如缺页、非法地址访问)。
保存异常地址和状态寄存器(如FAR、IFSR/DFSR)。
Undefined模式(und):
特点:
处理未定义指令异常(如执行未知操作码)。
通常用于软件仿真或动态指令扩展。
Monitor模式(mon):
特点:
管理安全与非安全状态的切换(通过
SMC
指令触发)。隔离敏感操作(如加密、密钥管理)与普通应用程序。
Hyp模式(hyp):
特点:
虚拟机监控程序(Hypervisor)的专用模式。
管理虚拟机的创建、调度和资源隔离。
(1)User modeAn operating system runs applications in User mode to restrict the use of system resources.Software executing in User mode executes at PL0. Execution in User mode is sometimes described as unprivileged execution.操作系统在用户模式下运行应用程序以限制系统资源的使用。在用户模式下执行的软件在PL0执行。在用户模式下执行有时被描述为非特权执行。Application programs normally execute in User mode, and any program executed in User mode:Makes only unprivileged accesses to system resources, meaning it cannot access protected system resources.Makes only unprivileged access to memory.Cannot change mode except by causing an exception,应用程序通常在用户模式下执行,而在用户模式下执行的任何程序:仅对系统资源进行非特权访问,这意味着它无法访问受保护的系统资源。仅对内存进行非特权访问。除非引起异常,否则无法更改模式,用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。(2)System modeSoftware executing in System mode executes at PL1. System mode has the same registers available as User mode, and is not entered by any exception.在系统模式下执行的软件在PL1上执行。系统模式具有与用户模式相同的寄存器,并且不能通过任何异常进入系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。(3)Supervisor modeSupervisor mode is the default mode to which a Supervisor Call exception is taken. Executing a SVC (Supervisor Call) instruction generates a Supervisor Call exception, that is taken to Supervisor mode. A processor enters Supervisor mode on Reset.Supervisor模式是采取Supervisor Call异常的默认模式。执行SVC(Supervisor Call)指令会生成 Supervisor Call异常,该异常被带到Supervisor模式。处理器在复位时进入Supervisor模式。管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。(4)Abort modeAbort mode is the default mode to which a Data Abort exception or Prefetch Abort exception is taken.中止模式是数据中止异常或预取中止异常的默认模式。中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。(5)Undefined modeUndefined mode is the default mode to which an instruction-related exception, including any attempt to execute an UNDEFINED instruction, is taken.未定义模式是与指令相关的异常(包括任何执行未定义指令的尝试)采取的默认模式。(6)FIQ modeFIQ mode is the default mode to which an FIQ interrupt is taken.FIQ模式是采用FIQ中断的默认模式。快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。(7)IRQ modeIRQ mode is the default mode to which an IRQ interrupt is taken.IRQ模式是采用IRQ中断的默认模式。一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。(8)Hyp modeHyp mode is the Non-secure PL2 mode, implemented as part of the Virtualization Extensions. Hyp mode is entered on taking an exception from Non-secure state that must be taken to PL2Hyp模式是作为虚拟化扩展的一部分实现的非安全PL2模式。Hyp模式在从非安全状态获取必须带到PL2的异常时进入The Hypervisor Call exception and Hyp Trap exception are exceptions that are implemented as part of the Virtualization Extensions, and that are always taken in Hyp mode.Hypervisor Call异常和Hyp Trap异常是作为虚拟化扩展的一部分实现的异常,并且始终在Hyp模式下执行。In a Non-secure PL1 mode, executing a HVC (Hypervisor Call) instruction generates a Hypervisor Call exception.在非安全PL1模式下,执行HVC(Hypervisor Call)指令会生成Hypervisor Call异常。(9)Monitor modeMonitor mode is the mode to which a Secure Monitor Call exception is taken. In a PL1 mode, executing an SMC (Secure Monitor Call) instruction generates a Secure Monitor Call exception.监视器模式是采用安全监视器调用异常的模式。在PL1模式下,执行SMC(安全监视器调用)指令会生成安全监视器调用异常。Monitor mode is a Secure mode, meaning it is always in the Secure state, regardless of the value of the SCR(secure config register).NS bit. Software running in Monitor mode has access to both the Secure and Non-secure copies of system registers. This means Monitor mode provides the normal method of changing between the Secure and Non-secure security states.监视器模式是一种安全模式,这意味着无论SCR.NS位的值如何,它都始终处于安全状态。在监视器模式下运行的软件可以访问系统寄存器的安全和非安全副本。这意味着监视器模式提供了在安全和非安全安全状态之间更改的正常方法。
ARM核寄存器介绍
通用寄存器
ARM处理器通常有16个32位的通用寄存器,编号从R0到R15
-
R0-R10:普通的通用寄存器,用于存放用户的数据。在函数调用和日常计算中使用。
-
R11 (fp: frame pointer):帧指针寄存器,用于记录当前函数调用的栈帧的起始地址。在访问局部变量和执行函数调用时非常有用。
-
R12 (ip: intra-procedure-call scratch register):在函数内部调用过程中用作临时寄存器,可以用来临时存储数据,如保存sp(栈指针)。
-
R13 (sp: stack pointer):栈指针寄存器,指向当前栈顶的位置。栈是用于存储函数调用信息、局部变量和临时数据的数据结构。
-
R14 (lr: link register):链接寄存器,在函数调用时用来保存返回地址。当一个函数被调用时,调用该函数的指令地址会被存储在lr中,以便在函数执行完毕后能够返回到正确的位置继续执行。
-
R15 (pc: program counter):程序计数器,指向CPU接下来要执行的指令的地址。每次指令执行完毕后,pc会自动更新为下一条指令的地址。
程序状态寄存器
- CPSR(Current Program Status Register) 当前程序状态(模式、中断使能等)
CPSR是一个32位的寄存器,用于存储处理器的状态信息和控制信息
N、Z、C、V,最高4位称为条件码标志。ARM的大多数指令可以条件执行的,即通过检测这些条件码标志来决定程序指令如何执行。
各个条件码的含义如下:
N:在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0。
Z:如果结果为0,则Z=1;如果结果为非零,则Z=0。
C:其设置分一下几种情况:
对于加法指令(包含比较指令CMN),如果产生进位,则C=1;否则C=0。
对于减法指令(包括比较指令CMP),如果产生借位,则C=0;否则C=1。
对于有移位操作的非法指令,C为移位操作中最后移出位的值。
对于其他指令,C通常不变。
V:对于加减法指令,在操作数和结果是有符号的整数时,如果发生溢出,则V=1;如果无溢出发生,则V=0;对于其他指令,V通常不发生变化。
- SPSR(Saved Program Status Register) 异常发生时保存的CPSR值