ARMv8-A架构基础之 异常级别(exception level, el)

ARM架构定义了基于处理器模式的异常模型。 对于每种异常类型,体系结构都定义了异常所采用的模式。 这种模式被称为异常的目标模式(target mode)。 然而可配置的陷入,使能和路由控制常常可以更改异常的目标模式。 ARMv8-A 的AArch32遵循此模型。

当处理器发生异常时:

  • 将当前程序状态保存在目标模式的SPSR中。
  • 保存异常的返回地址:
    • 如果目标模式不是Hyp模式,则在目标模式的链接寄存器(LR)中。
    • 如果目标模式是Hyp模式,则在ELR_hyp中。
  • 进入目标模式。 除非异常目标模式是Monitor模式,否则不会更改安全状态。

ARMv7-A体系结构使用从PL0到PL2的特权级别。 在ARMv8-A中,异常级别已经取代了权限级别,但本节将介绍如何对PL1继续进行特殊使用。 下表显示了包含虚拟化扩展和安全扩展的ARMv7-A处理器的全套处理器模式。 它还显示了ARMv7-A分配给每个模式的特权级别,这些模式定义了其执行权限。 执行权限是在每个安全状态中独立定义的。

模式功能安全状态ARMv7-A特权级别
User (USR)非特权模式(大多数应用程序都运行在该模式)BothPL0
FIQFIQ中断异常时进入BothPL1
IRQIRQ中断异常时进入BothPL1
Supervisor (SVC)重置时进入或执行监督调用指令(SVC)时进入BothPL1
Monitor (MON)当执行SMC指令(安全监视器调用)时或处理器进入Monitor 模式异常用于支持安全状态和非安全状态之间的切换。Secure onlyPL1
Abort (ABT)内存访问异常时进入BothPL1
Undef (UND)在执行未定义的指令时进入BothPL1
System (SYS)特权模式,与用户模式共享寄存器视图BothPL1
Hyp (HYP)由Hypervisor调用和Hyp陷入异常时进入Non-secure onlyPL2

在ARMv7-A体系结构中,处理器模式可以在特权软件控制下更改,或者在发生异常时自动更改。 当发生异常时,内核保存当前执行状态和返回地址,进入处理异常所需的模式,并可能禁用硬件中断。 在以前没有特权的用户模式,应用程序以最低级别的特权PL0运行。

操作系统在PL1上运行。 在具有虚拟化扩展的系统中,Hypervisor在PL2上运行。 安全监视器作为在安全世界和普通世界之间切换的网关,也在PL1上运行。

ARMv8-A不更改此异常模型,但添加了以下规则以涵盖ARMv7-A中不可能出现的情况:

  • 如果EL2正在使用AArch64,则任何以Hyp模式为目标的异常进入EL2也将使用AArch64。
  • 如果EL3正在使用AArch64,则任何以Monitor模式为目标的异常进入EL3也将使用AArch64。

在AArch64中,处理器模式被映射到的异常级别如下图所示(linux 就是rich os)。

比较典型映射如下:

当发生异常时,处理器把异常级别切换到能处理该异常类型的异常级别(相当于ARMv7-A中的处理器模式)。 在AArch32中安全监视器(Secure monitor)在PL1上运行,而在AArch64中安全监视器在EL3上运行。

处理器模式映射到异常级别

安全状态下的异常级别取决于EL3是否使用AArch64。 这会影响处理器模式如何映射到异常级别。

ARMv7-A中使用的monitor模式在ARMv8-A中不存在。这是因为正在使用AArch64的EL3提供了Secure monitor功能。

在普通世界中映射没有变化,但是在安全世界中,Supervisor 模式,Abort 模式,IRQ模式,FIQ模式,Undefined 模式和System 模式从EL1升级到EL3。 这是因为:

  • EL3提供Secure Monitor功能。
  • ARMv6安全扩展将Monitor 模式定义为与下面这些模式为同一层级的安全状态模式:Supervisor 模式,Abort 模式,IRQ模式,FIQ模式,Undefined 模式和System 模式。 因此,这些模式和Secure Monitor功能一起表示为EL3。

这个重映射对处理器的操作没有影响。 在AArch32状态内的操作完全根据处理器模式之间的交互来定义,而不涉及任何关联的权限级别或异常级别。

ARMv8-A中的权限级别

当EL3使用AArch32时,这些模式集(Supervisor,Abort,IRQ,FIQ,Undefined,System)是处于安全状态的EL3模式,在所有其他情况下都是EL1模式。

为了避免这种复杂的描述,这些模式可以被描述为PL1模式,反映它们在ARMv7-A中的特权级别。 与此相关的是:

  • 在这两种安全状态下,这些模式下影响执行的控制可以被描述为PL1控制。
  • 在这些模式或用户模式下执行时,使用的转换系统称为PL1&0转换机制。
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ARMv8架构是一个64位ARM处理器架构,为ARMv8-A架构提供了参考手册。该手册提供了关于架构的详细信息,包括指令集和编程模型,处理器特性以及系统级寄存器等方面的信息。为了帮助软件开发人员理解和使用ARMv8-A处理器,参考手册详细介绍了指令和寄存器的编码格式,以及编写汇编语言和C语言程序时应该注意的问题。参考手册还概述了与ARMv8-A架构相关的系统软件,包括操作系统、编译器、调试器和程序库等。所有这些内容都旨在帮助软件开发人员设计和编写高效和可靠的ARMv8-A处理器应用程序。总之,ARMv8架构参考手册为计算机领域的专业人士提供了有关ARMv8-A架构的深入了解,是开发ARMv8-A应用程序的必备参考。 ### 回答2: ARMv8架构是英国ARM公司推出的一种新一代处理器架构,能够支持32位和64位的指令集,ARMv8-A架构则是针对64位处理器的应用而设计的。关于这种架构的详细信息,可以参考ARMv8架构参考手册,这本手册是ARM公司对ARMv8-A架构的官方技术文献。 ARMv8架构参考手册包含了众多的内容,包括了处理器特性、系统架构、系统调用接口、指令集等。其中,处理器特性指的是ARMv8处理器所具备的一些基础特性,如支持硬件虚拟化、支持大页、支持NEON SIMD等。系统架构则描述了ARMv8处理器的整体架构和内存系统,主要包括了Cache、MMU、中断控制器等部分。系统调用接口则是操作系统与硬件交互的接口,指令集则是ARMv8架构所支持的指令集。 ARMv8架构参考手册是ARMv8-A架构开发中不可或缺的技术资料,可以帮助开发者更好地理解ARMv8的特性、架构和指令集,从而更好地设计和实现ARMv8架构的处理器、操作系统和应用程序。对于学习和研究ARMv8架构的开发者来说,这本手册是官方权威的技术文献,具有很高的参考价值。 ### 回答3: ARM架构参考手册ARMv8,适用于ARMv8-A架构。这个手册是ARMv8-A体系结构的一种完整描述和详细参考,旨在支持软件开发和硬件开发。它包括指令集架构、特权架构、MMU、中断控制器、定时器、信号处理指令等所有主要软硬件系统组件的详细说明。该手册还包括系统级和用户级编程的全面指南,如进程进程调度、系统调用、内存管理等。除此之外,手册介绍了其他相关的技术,如虚拟化、信任执行、定时器、高级调试等等,以满足广泛的应用需求。总的来说,ARM架构参考手册ARMv8为使用ARMv8-A体系结构开发软件和硬件提供了强大而全面的指导,使得开发过程更加高效和正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值