ARMv8 Profile(A/R/M)异常/特权模型

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