首页 > 其他分享 >ARM架构的异常模型

ARM架构的异常模型

时间:2024-04-05 18:59:56浏览次数:292  
标签:状态 架构 访问 异常 模型 安全 EL3 级别 ARM

一、异常级别

1、异常级别0(EL0)

        用户模式,是四个异常级别中权限最低的一个。

        目标软件:应用程序代码

        设计用途:运行绝大多数终端用户的软件,如文档编辑器、游戏和通讯应用。这些应用程序运行在一个受限的环境中,以减少它们对系统安全性和稳定性的潜在威胁。

2、异常级别1(EL1)

        操作系统内核模式。

        目标软件:丰富的操作系统 (OS),例如 Linux

        设计用途:执行系统管理和控制任务,包括进程调度、内存管理、硬件抽象和安全控制等。操作系统内核在这个级别上运行,以便它可以执行对硬件资源的直接操作和管理系统的全局状态。

3、异常级别2(EL2)

        超级用户模式(Hypervisor)。

        目标软件:虚拟机监视器(Hypervisor)或虚拟化管理软件。

        设计用途:支持在单个物理硬件上虚拟化多个操作系统实例。Hypervisor 控制物理资源的分配给虚拟机,并管理它们的执行,提供了一种安全和高效的方式来增加硬件的利用率和支持软件隔离。

4、异常级别3(EL3)

        安全模式(TrustZone),这是最高的异常级别。

        目标软件:固件和安全网关代码

        设计用途:提供系统的安全启动和运行时的安全服务,如加密操作和安全存储管理。EL3用于实现一个安全的执行环境,保护敏感操作和数据免受其他系统部分的干扰。

4、如何在两个异常级别之间切换?

(1)从EL0到EL1(系统调用)

        触发方式:应用程序(在EL0运行)通过执行特定的系统调用指令(如 SVC 在 ARM 中)请求操作系统服务,这会触发一个异常,将控制权转移到EL1。

        处理:处理器自动保存当前应用程序的上下文(如CPU寄存器状态),并加载为处理系统调用而设置的EL1环境(如异常向量表中指定的系统调用处理程序)。

        返回:完成服务后,操作系统通过执行特定的返回指令(如ERET)来恢复应用程序的上下文,并将控制权返回给EL0。

(2)从EL1到EL2(虚拟化时的异常或中断)

        触发方式:如果系统配置了虚拟化,并且某个操作需要Hypervisor的介入(如管理VM的资源分配),当这类操作发生时,系统会自动切换到EL2。

        处理:类似于系统调用的处理,处理器保存当前的操作环境并加载EL2的环境来处理请求或中断。

        返回:处理完请求后,通过执行返回指令切换回EL1或者根据需要返回到其他级别。

(3)从较低EL到EL3(安全操作)

        触发方式:在需要执行安全操作(如访问安全资源、执行加密操作)时,系统会通过安全监视器调用(SMC指令)切换到EL3。

        处理:EL3接管控制权,执行必要的安全操作,如安全认证、数据加解密等。

        返回:安全操作完成后,通过特定指令返回到调用级别,继续执行非安全操作。

(4)通用机制

        上下文保存与恢复:在每次级别切换时,当前级别的状态(如寄存器、程序计数器)被保存,以便在返回时恢复。

        特权指令执行:执行级别切换通常需要特权指令(如ERET、SMC),这些指令只能在更高的异常级别中执行。

        安全和访问控制:系统确保只有合法和安全的操作能够触发级别切换,通过硬件和软件机制防止未授权的访问。

二、特权类型

1、内存系统中的特权

2、从访问处理器资源的角度来看的特权

两种类型的特权都受到当前特权异常级别的影响

内存特权

        Arm 架构的 A-profile 实现了虚拟内存系统,其中内存管理单元 (MMU) 允许软件为内存区域分配属性。这些属性包括读/写权限,可以将其配置为允许特权访问和非特权访问的单独访问权限。当处理器在 EL0 中执行时启动的内存访问将根据非特权访问权限进行检查。来自 EL1、EL2 和 EL3 的内存访问将根据特权访问权限进行检查。

三、执行和安全状态

执行状态

        Armv8和Armv9-A支持两种执行状态:AArch32和AArch64

        改变执行状态

        处理元件 (PE) 只能在重置或异常级别更改时更改执行状态。当 PE 在异常级别之间移动时,可以更改执行状态,但是仅允许在 AArch32 和 AArch64 之间转换,但须遵守附加规则:

        1、当从较低的异常级别移动到较高的级别时,执行状态可以保持不变或更改为 AArch64

        2、当从较高的异常级别移动到较低的级别时,执行状态可以保持不变或更改为 AArch32

        Armv8-A 架构支持所有异常级别的 AArch32 和 AArch64 执行状态。对于 Armv9-A 处理器,所有 EL 都需要支持 AArch64。

安全状态

        安全状态定义了可以访问哪些已实现的异常级别、当前可以访问哪些内存区域以及如何在系统内存总线上表示这些访问。如果处于Non-secure状态,则PE只能访问Non-secure物理地址空间。在安全状态下,PE 可以访问安全和非安全物理地址空间。

        1、安全状态:在此状态下,处理元件 (PE) 可以访问安全和非安全物理地址空间以及存储寄存器的安全副本。

        2、非安全状态:这通常也称为正常世界。在这种状态下,PE只能访问非安全物理地址空间。 PE 只能访问允许非安全访问的系统寄存器。

        更改安全状态

         在 Armv8-A 中,EL3 始终处于 Secure 状态。在 Armv9-A 中,除非实现了 RME,否则 EL3 是安全状态的一部分。如果实现了 RME,根状态是 EL3 与其余安全状态的分离。

        领域管理扩展        

        Armv9-A 引入了对领域管理扩展 (RME) 的支持。实施 RME 时,支持两种附加安全状态:

        1、Realm状态:在此状态下PE可以访问非安全和Realm物理地址空间。

        2、根状态:在此状态下PE可以访问所有物理地址空间。根状态仅在 EL3 中可用。

        RME 将 EL3 与所有其他安全状态隔离。通过 RME,EL3 脱离安全状态并进入其自己的安全状态(称为根)。异常级别 3 托管平台和初始引导代码,因此必须受到安全、非安全和领域状态下的软件的信任。

下图显示了启用 RME 的 PE 中的安全状态,以及这些安全状态如何映射到异常级别:

四、参考

Documentation – Arm Developer

标签:状态,架构,访问,异常,模型,安全,EL3,级别,ARM
From: https://blog.csdn.net/Zaczc/article/details/137207426

相关文章

  • 在深度学习模型中引入先验
    当面对复杂问题的时候,在深度学习模型提取特征的过程中完全抛弃知识是非常不明智的策略。虽然有很多研究者在深度网络处理数据之前,利用具有某种知识的模型驱动方法对数据进行预处理,但是这种方法没有进行实质性地改造深度网络,且这种两阶段方法从端到端学习策略来看很难达到最优。......
  • 书生·浦语大模型全链路开源体系——学习笔记day2&day3--纯纯新手入门
    学习链接:tutorial/helloworld/hello_world.mdatmain·InternLM/tutorial(github.com) 【精彩,照着做就能体验很多本来遥不可及的东西】笔记分享链接:https://github.com/InternLM/tutorial/discussions/37 本笔记定位是对学习链接的补充和小白发牢骚,希望大佬能愿意点评一......
  • three.js基础之几何体颜色、纹理贴图、外部模型
    几何体颜色<body><canvasid="mainCanvas"width="400px"height="300px"></canvas></body><scripttype="importmap">{"imports":{"three":"./js/build/......
  • 12种常见的软件架构风格
    什么是软件架构?软件架构是定义软件系统的高级结构和组织的过程。它涉及识别和选择正确的组件,决定它们之间如何交互,以及确定它们应该如何组织以实现特定的目标。软件架构的目标是创建一个可维护、可扩展和安全的系统,能够满足用户和组织的需求。为什么需要软件架构?强大的架......
  • 《架构风清扬-Java面试系列第13讲》说一说Java对象在内存中的生命周期
    大家好,加个餐!像线程的生命周期,Servlet的生命周期,相信这类问题大家都非常熟悉了Java对象在内存中的生命周期,这个题目倒是有些新鲜来,思考片刻,说出你的答案(PS:上图缓冲)Java对象在其内存中的生命周期可以被划分为多个阶段,下面钊哥逐个给大家说一说1,创建阶段(Creation......
  • 突破编程_C++_网络编程(TCPIP 四层模型(传输层))
    1传输层的功能与作用在TCP/IP四层模型中,传输层位于网络层之上和应用层之下,负责在源主机和目标主机之间提供端到端的可靠数据传输服务。传输层的主要功能与作用体现在以下几个方面:分段与重组:由于网络层的数据包大小有限制(如IP数据包的最大长度为65535字节),而应用层......
  • 【系统深入学习GO】Go 的并发机制-原理探究 线程实现模型
    在操作系统提供的内核线程之上,Go搭建了一个特有的两级线程模型。*两级线程模型:两级线程模型也称为多对多(M:N)的线程实现。与其他模型相比,两级线程模型提供了更求的灵活性。在此模型下,一个进程可以与多个KSE相关联,这与内核级线程模型相似。但与内核级线程模型不同的是,进程......
  • springAI初体验 让人人都能跑大模型
    springAI初体验让人人都能跑大模型SpringAI是一个旨在简化开发包含人工智能功能的应用程序的项目。它受到Python项目如LangChain和LlamaIndex的启发,但并非这些项目的直接移植。SpringAI的核心理念是为开发AI应用程序提供基础抽象,这些抽象有多个实现,使得在不同实现之间......
  • OpenAI劲敌出手!Claude 3正式发布,全面超越GPT-4。Claude3模型特点和使用教程分享
    已有GPT官方账号不会升级GPT4请参考:【国内如何用gpt4?如何升级gpt4?保姆级教程】一、Claude震撼发布焦点分析1.Claude震撼发布北京时间2024年3月4日晚间,Anthropic,毫无预警地发布了最新一代大模型Claude3,距离上一代的Claude2发布,仅相隔8个月。Claude发布了最新的大模型Cla......
  • 数学模型,第2章训练题,超市购物,垂钓俱乐部,圆盘加工,动物尺寸,python,论文
    目录      1.题目描述2. 题目描述3.题目描述4.题目描述5.问题描述1. 题目描述在超市购物时你注意到大包装商品比小包装商品便宜这种现象了吗?比如佳洁士牙膏120g装的每支10.80元,200g装的每支15.80元,二者单位质量的价格比是1.14:1。使用比例方法构造模型解......