ARMv8 Profile(A/R/M)异常/特权模型
2026/8/21 8:03:43
网站建设
项目流程
ARMv8 Profile(A/R/M)异常/特权模型
一、总览对比
| 维度 | ARMv8-A | ARMv8-R | ARMv8-M |
|---|
| 特权/异常模型名称 | 异常等级(Exception Level) | 处理器模式(Processor Mode) | 线程/处理模式(Thread/Handler Mode) |
| 特权层级数量 | 4级:EL0-EL3 | 通常7-8种模式 | 2种模式 × 2特权级 |
| 状态寄存器 | PSTATE(抽象位集合,分域访问) | CPSR/SPSR(真实寄存器,可整体读写) | xPSR(APSR+IPSR+EPSR组合) |
| 寄存器切换方式 | 通用寄存器全EL共享,仅SP按EL分离(SP_ELx) | Banked寄存器(不同模式独立R8-R14等) | 无Banked寄存器,靠硬件自动压栈 |
| 中断/异常响应机制 | 通过VBAR_ELx向量表+ELR/SPSR软件保存现场 | 类似AArch32,向量表跳转+Banked寄存器保现场 | NVIC硬件自动压栈+尾链优化 |
| 典型芯片 | Cortex-A55/A76/A78 | Cortex-R52/R82 | Cortex-M23/M33/M55/M85 |
二、特权层级对比
ARMv8-A:EL0-EL3
| 等级 | 名称 | 典型运行内容 | 特权程度 |
|---|
| EL0 | 用户态 | 应用程序(App) | 最低,非特权 |
| EL1 | 内核态 | OS内核(Linux Kernel) | 特权 |
| EL2 | 虚拟化 | Hypervisor(KVM等) | 更高特权 |
| EL3 | 安全监控 | Secure Monitor(TrustZone固件) | 最高特权 |
ARMv8-R:7-8种处理器模式(沿用AArch32模式设计)
| 模式 | 触发场景 | 特权 |
|---|
| User | 非特权应用 | 非特权 |
| System | 特权任务(共享User寄存器) | 特权 |
| SVC | 系统调用(SWI/SVC指令) | 特权 |
| IRQ | 普通中断 | 特权 |
| FIQ | 快速中断(独占R8-R14) | 特权 |
| Abort | 内存访问异常 | 特权 |
| Undef | 未定义指令异常 | 特权 |
| Hyp(部分实现) | 虚拟化监控 | 更高特权 |
ARMv8-M:Thread/Handler × Privileged/Unprivileged
| 模式 | 触发场景 | 特权级别 |
|---|
| Thread mode | 普通应用代码 | 非特权 |
| Thread mode | 特权应用代码/裸机主循环 | 特权 |
| Handler mode | 任意异常/中断处理 | 特权(不可为非特权) |
三、栈指针机制对比
| ARMv8-A | ARMv8-R | ARMv8-M |
|---|
| SP数量 | 4个:SP_EL0~SP_EL3 | 每模式一个Banked SP(User/SVC/IRQ/FIQ/Abort/Undef各一份) | 2个:MSP、PSP |
| 选择机制 | PSTATE.SPSel位 | 由当前处理器模式(CPSR的Mode位)自动决定 | CONTROL寄存器位 + Handler mode恒用MSP |
| 设计目的 | 隔离不同EL的栈,防止越权访问 | 隔离不同异常源的栈,快速响应 | 隔离主程序栈与RTOS任务栈(MSP给内核/中断,PSP给用户任务) |
四、异常现场保存机制对比
| ARMv8-A | ARMv8-R | ARMv8-M |
|---|
| 保存返回地址 | ELR_ELn(各EL独立) | LR_(Banked LR,如LR_irq) | 硬件自动压栈到当前SP指向的栈内存,LR被特殊编码(EXC_RETURN)标记 |
| 保存状态寄存器 | SPSR_ELn | SPSR_(Banked) | 压栈到栈内存中的xPSR |
| 保存通用寄存器 | 软件手动压栈(X0-X30需自行保存) | 软件手动压栈(部分模式R8-R14是独立Banked副本,天然"保存") | 硬件自动压栈R0-R3,R12,LR,PC,xPSR |
| 是否需要软件干预保存现场 | 需要(软件负责push/pop) | 部分需要(非Banked寄存器仍需软件保存) | 基本不需要(硬件自动完成,大幅降低中断延迟) |
五、内存保护机制对比
| ARMv8-A | ARMv8-R | ARMv8-M |
|---|
| 内存管理单元 | MMU(虚拟地址转换,支持虚拟内存) | MPU(仅内存保护,无虚拟地址转换) | 通常MPU(可选),高端型号可选 |
| 特权与内存访问关系 | 不同EL可配置不同页表/权限(TTBR/TCR) | 不同模式访问权限由MPU regions配置约束 | 特权/非特权访问受MPU region约束,TrustZone(M23/M33起)额外分Secure/Non-secure |
六、安全隔离机制对比
| ARMv8-A | ARMv8-R | ARMv8-M |
|---|
| 安全扩展名称 | TrustZone(EL3为Secure Monitor) | 部分支持TrustZone-like机制 | TrustZone for ARMv8-M(M23/M33/M55支持) |
| Secure/Non-secure划分 | 通过EL3切换,NS位标记状态 | 视具体实现 | Secure/Non-secure State独立存在,每种State下Thread/Handler模式各一套,通过SAU/IDAU硬件划分内存区域 |