《learn_the_architecture_-_aarch64_exception_model》学习笔记

1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比EL0更高的异常级别处理。

2.ARM A-profile处理器(即A系列)的虚拟内存系统通过内存管理单元(MMU)管理内存访问权限。MMU使用转换表将虚拟地址映射到物理地址,并设置内存区域的属性和访问权限,包括读/写权限。访问权限分为特权和非特权访问,特权访问由高异常级别(如EL1、EL2、EL3)控制,通常用于操作系统内核或虚拟机管理程序,而非特权访问用于低级别的用户模式(EL0)。当应用程序在EL0执行时,内存访问权限会根据非特权访问权限进行检查,确保其不能访问超出权限的区域。而EL1、EL2、EL3的内存访问根据特权访问权限进行检查。MMU的配置存储在系统寄存器中,这些寄存器的访问权限由当前的异常级别控制,确保只有高权限级别才能修改MMU的配置,从而保障系统的安全性和稳定性。

3.SCTLR_ELx,即System Control Register。是ARM架构中用于控制系统行为的关键寄存器之一。不同的异常级别(EL0,EL1,EL2,EL3)都有相应的SCTLR_ELx寄存器,EL1和EL0共享相同的MMU配置,并且控制仅限于在EL1上运行的特权代码。因此没有SCTLR_EL0,所有控制均来自EL1可访问寄存器。较高的异常级别有权访问控制较低级别的寄存器,反之则不行。例如,如果需要,EL2有权访问SCTLR_EL1。无法从EL0访问该寄存器,任何尝试这样做都会生成异常。常见的系统寄存器如下表:

4.ARM架构中,处理元件(PE)在AArch32和AArch64执行状态间的切换只能在异常级别(EL)变化时发生。较低EL到较高EL时,可以保持当前状态或切换为AArch64;较高EL到较低EL时,可以保持或切换为AArch32。64位层可以托管32位层,但32位层不能托管64位层。例如,64位操作系统可运行64位和32位应用程序,而32位操作系统只能运行32位应用程序。AArch32提供与旧32位架构的向后兼容性,从Armv9-A开始在所有异常级别都必须支持AArch64,并且仅可选择在EL0级别支持AArch32。即除EL0其他异常级别均为 AArch64,并且复位时执行状态始终为 AArch64。这意味着旧版应用程序可以运行,但不能运行内核、虚拟机管理程序或固件。

5.AArch64架构支持多种安全状态,主要分为安全状态和非安全状态。想要从一种安全状态切换到另一种安全状态时必须通过EL3。如果实现了TrustZone,则处理器可以处于安全状态或非安全状态,这由SCR_EL3.NS位选择。安全状态下,处理元件(PE)可访问安全和非安全物理地址空间,适用于运行可信软件;而在非安全状态下,PE仅能访问非安全物理地址空间,适用于普通操作系统。EL3 是最高特权的异常级别,EL3 的安全状态是固定的,EL3 能够访问存储系统寄存器的所有副本。在Armv8-A架构中,EL3始终处于安全状态。而在Armv9-A架构中,EL3属于安全状态,除非实现了RME(Root Management Entity)。

Armv9-A新引入了对Realm Management Extension(RME)的支持。当实现RME时,支持两种额外的安全状态:Realm状态和Root状态。在Realm状态下,处理元件(PE)可以访问非安全和Realm物理地址空间;而在Root状态下,PE可以访问所有物理地址空间,且Root状态仅在EL3中可用。

6.对于任何特定处理器,是否实现所有异常级别以及每个实现的异常级别允许哪些执行状态都是可选择的,EL0和EL1是唯一必须实现且强制执行的异常级别,EL2和EL3是可选的。EL2包含许多虚拟化功能,没有EL2的实现无法访问这些功能。EL3是唯一可以更改安全状态的级别,如果实现选择不实现EL3,则该PE将只能访问单个安全状态。在Armv8.0-A中,EL2只存在于Non-secure状态,因为Secure状态下没有虚拟化支持。Armv8.4-A添加了S.EL2作为带有使能位(SCR_EL3.EEL2)的可选功能,以提供向后兼容性。

7.异常是指任何可能导致当前正在执行的程序挂起的事件,发生异常会导致状态发生变化,以执行代码来处理该异常。当发生异常时,处理器不会移至当前代码中的下一条指令,而是停止当前执行并分支到一段代码来处理请求。该代码称为异常处理程序,一旦事件处理完毕,执行就可以返回到原来的程序。Arm架构将异常分为两大类:同步异常和异步异常。同步异常是由当前正在执行的指令引起或与之相关的异常。同步异常与执行流同步,因为它们与当前执行的指令直接相关。例如,尝试写入MMU定义的只读位置的指令将触发同步异常。常见的同步异常有:Invalid instructions and trap exceptions、Memory accesses(内存访问异常是软件层面的问题,通常与页表、虚拟内存和访问权限相关,注意与SError区别)、Exception-generating instructions、Debug exceptions。SVC、HVC、SMC指令分别用于EL0请求EL1操作系统服务、EL1请求EL2虚拟机管理程序服务、普通世界请求EL3安全世界服务。当 PE 在 EL0 上执行时,它无法直接调用EL2上的虚拟机管理程序或EL3上的安全监视器,因为这只能在EL1及更高版本上实现。EL0处的应用程序必须使用对内核的SVC调用,并让内核执行调用更高异常级别的操作。假设已经实现了相应的异常级别,则操作系统内核EL1可以执行HVC指令来调用EL2处的管理程序或使用SMC指令调用EL3处的安全监视器。类似地,从EL2开始,PE可以使用SMC指令来调用EL3安全监视器。如下图所示:

异步异常不直接与当前执行的指令相关,并且通常是来自处理器外部的系统事件。这可能是软件需要响应的系统事件,例如计时器的活动或屏幕的触摸。异步异常也称为中断。常见的异步异常(中断)有:Physical interrupts(如UART中断)、SError(System Error是内存系统为响应意外事件而生成的异常类型,主要与硬件故障或系统层面的严重问题相关,通常是由硬件故障引起的,比如内存、缓存、外设或总线出错)、IRQ and FIQ、Virtual interrupts(如vSError、vIRQ、vFIQ, 这些虚拟中断的功能与物理中断相同,但它们只能向EL1发送信号)。物理和虚拟异步异常都可以被暂时屏蔽,这意味着异步异常可以保持挂起状态,直到它们被取消屏蔽并且异常被处理,这对于处理嵌套异常特别有用。同步异常无法被屏蔽,这是因为同步异常是由指令的执行直接引起的,因此如果它们随后悬而未决或被忽略,则会阻止执行。总结一下,从更大的角度来说,ARM中异常总的分为同步异常、SError、IRQ和FIQ四类,其中后面三个是中断,同步异常和SError是没有与之对应的中断号的,所有的SGI、SPI、PPI、LPI中断最终都是被处理为IRQ或FIQ(可以将IRQ或FIQ理解为中断处理方式,将SGI、SPI、PPI、LPI理解为中断分类)。

8.当处理器遇到异常时,会保存当前处理元件(PE)的状态和异常返回地址,并进入特定模式以处理该异常。当前的处理器状态从PSTATE中获取(在ARMv8架构中,PSTATE 并不是一个单独的寄存器,而是一个处理器状态寄存器的抽象概念,PSTATE中的DAIF位用于屏蔽异常事件。当相应的位被设置时,不会响应相应异常,包括D(调试异常)、A(SError异步异常)、I(IRQ异步异常)和F(FIQ异步异常)),并保存到程序状态寄存器(SPSR_ELx,x为1、2、3),而返回地址会存入异常链接寄存器(ELR_ELx,x为1、2、3)。对于同步异常和SError,还会更新异常综合症寄存器(ESR_ELx,x为1、2、3),记录异常的具体原因。对于与地址相关的异常(如MMU故障),触发异常的虚拟地址会写入故障地址寄存器(FAR_ELx,x为1、2、3)。

9.任何给定异常的异常处理都从称为异常向量的固定内存地址开始,当异常发生时,处理元件(PE)分支到向量表中的某个位置。AArch64 中的向量表与许多其他处理器架构不同,因为它们包含指令,而不是地址。每个条目最多包含32条指令,一个指令4字节(32位);足以执行基本的堆栈和调用特定于异常的处理代码。异常处理与返回如下图所示:

10.每种异常类型都有目标异常级别,可能是根据异常类型隐式决定的,或者由系统寄存器中的配置位定义。同步异常(如SVC、HVC和SMC指令)根据与其指令相关的规则进行路由。其他异常类型(如IRQ、FIQ和SError)可以路由到EL2(虚拟机管理程序)或EL3(安全监视器)。例如,可以配置系统将所有IRQ路由到EL1。每种异常类型(IRQ、FIQ和SError)的路由配置是独立进行的。SCR_EL3寄存器用于指定哪些异常(如IRQ、FIQ和SError)会路由到EL3(安全监视器),HCR_EL2寄存器用于指定哪些异常会路由到EL2(虚拟化层),这些寄存器允许将不同类型的中断路由到不同的异常级别。SCR_EL3和HCR_EL2中的每一位控制特定类型的中断(如IRQ、FIQ、SError),SCR_EL3的配置优先于HCR_EL2配置。当系统复位时,这些路由位的值是UNKNOWN的,必须由软件进行初始化配置。

11.路由到较高异常级别的异常无法被较低EL屏蔽。例如,如果中断在EL1中被屏蔽,并且中断被路由到EL2,则EL1屏蔽将不会影响EL2操作。路由到当前异常级别的异常可以被当前级别屏蔽。路由到较低异常级别的异常始终被屏蔽,异常将被挂起,直到PE更改为等于或低于路由到的异常级别。异常被处理时,处理器在特定异常级别的执行状态(AArch64或AArch32)由更高的异常级别的控制寄存器来决定。如下图:

12.每个异常级别都有自己的向量表,其基地址由其自己的向量基地址寄存器VBAR_ELx(Vector Base Address Register,x为1、2、3)定义。每种异常类型都有特定的地址偏移,这些偏移指向异常处理程序。异常可以分为四大类:来自较低异常级别的异常且较低异常级别使用的都是AArch32、来自较低异常级别的异常且较低异常级别至少有一个使用的是AArch64、来自当前异常级别且使用的堆栈指针是SP_EL0和来自当前异常级别且使用的堆栈指针是SP_ELx(使用哪个SP由PSTATE.SP位来决定)。在ARM架构中,当异常被路由到某个异常级别处理时,所使用的异常向量表是目标异常级别(即接收异常的异常级别)对应的向量表,而不是原始异常发生时的异常级别的向量表。

13.2021年扩展Armv8.8-A和Armv9.3-A中添加了不可屏蔽中断(NMI)支持。具有超级优先级的中断被归类为NMI,即使PSTATE异常掩码通常会阻止它被获取,也可以被获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/502263.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声音是如何产生的

一、音频概述 RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧 RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧 通道数(c…

Docker新手:在tencent云上实现Python服务打包到容器

1 使用docker的原因 一致性和可移植性:Docker 容器可以在任何支持 Docker 的环境中运行,无论是开发者的笔记本电脑、测试服务器还是生产环境。这确保了应用在不同环境中的行为一致,减少了“在我的机器上可以运行”的问题。 隔离性&#xff…

Science Robotics让软机器人“活”得更久的3D打印!

软机器人硬件在医疗、探索无结构环境等领域有广泛应用,但其生命周期有限,导致资源浪费和可持续性差。软机器人结合软硬组件,复杂组装和拆卸流程使其难以维修和升级。因此,如何延长软机器人的生命周期并提高其可持续性成为亟待解决…

conan从sourceforge.net下载软件失败

从sourceforge.net下载软件,经常会没有开始下载就返回了。 原因是: 自动选择的镜像站不能打开。 在浏览器中,我们可以手动选择站点尝试,但是conan就不行了。 手动选择一个站点,能够有文件保存窗口弹出,之后…

数势科技:解锁数据分析 Agent 的智能密码(14/30)

一、数势科技引领数据分析变革 在当今数字化浪潮中,数据已然成为企业的核心资产,而数据分析则是挖掘这一资产价值的关键钥匙。数势科技,作为数据智能领域的领军者,以其前沿的技术与创新的产品,为企业开启了高效数据分析…

第J4周:ResNet与DenseNet结合探索

目录 FROM一、本周内容1. ResNet与DenseNet的基本原理2. ResNet与DenseNet结合模块图 二、核心代码及运行截图 FROM 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 我的环境 语言环境:Python 3…

MYSQL--------选择合适的数据类型

char与varchar char:固定长度字符串类型,无论实际存储的字符串长度是多少,都会占用固定长度的存储空间。适合存储长度固定的字符串,如身份证号码、邮政编码等,存储和查询效率较高,但如果存储的字符串长度差…

vue3 拆信封动画

snows_ls BLOGhttp://snows-l.site/ 一、效果如下 截图工具截图效果不是很好&#xff0c; 可以查看线上效果 信封 | snows_ls BLOGhttp://snows-l.site/about/like/envelope 二、源码如下 <!--* Description: ------------ fileDescription -----------* Author: snows_l …

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

法律专业legal case的留学论文写作技巧分析(1)

对于法律专业的留学生而言&#xff0c;案例的分析是写作的重要方面。无论留学的国家是英、美、澳洲还是加拿大&#xff0c;它们都属于case law 的法律体系。一个非常显著的特点便是通过对案例进行分析和提炼&#xff0c;从中总结提炼出principle和rules。case analysis的留学论…

Jenkins 中自动化部署 Spring Boot 项目

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

MetaGPT - 多Agent框架

文章目录 一、关于 MetaGPT功能介绍快速开始的演示视频教程 二、安装Pip安装Docker安装 一、关于 MetaGPT MetaGPT 为GPTs分配不同的角色&#xff0c;以形成一个协作实体来完成复杂的任务。 github : https://github.com/geekan/MetaGPTtwitter : https://twitter.com/MetaGP…

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络&#xff0c;实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义&#xff1a;宽带接入技术是指能够传输大量数据的通信信道或网络&#xff0c;其传输速度通常较高&#xff0c…

计算机网络复习(大题)

&#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 一、简答题&#xff08;1&#xff09;五层原理体系结构每层功能&#xff1a;&#xff08;2&#xff09;TCP建立连接三次握手过程&#xff1a;&#xff08;3&#xff09;访问浏览器的过程&#xff1a;&#xff08;4&#xff09;抓…

AI代码开发实践-微信小程序开发

接上回&#xff0c;本人参加了一次小孩学校组织的护学岗&#xff0c;萌生了开发一个微信小程序的水印相机的想法&#xff0c;说干就干。 最近也是在学习用AI编程&#xff0c;索性之前也用一点&#xff0c;今天就尝试一下 工具选择&#xff0c;环境搭建 阿里-通义灵码 通义灵…

基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】

目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件&#xff1a; 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…

麒麟服务器安装kafka--亲测

我这安装的是单机版本的&#xff1a; 下载地址&#xff1a;Index of /kafka/3.9.0 我下载的是&#xff1a;https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz https://dlcdn.apache.org/kafka/3.9.0/kafka_2.12-3.9.0.tgz 一、下载并上…

基于HTML和CSS的旅游小程序

一、技术基础 HTML&#xff08;HyperText Markup Language&#xff09;&#xff1a;超文本标记语言&#xff0c;用于定义网页的内容和结构。在旅游小程序中&#xff0c;HTML用于搭建页面的基本框架&#xff0c;包括标题、段落、图片、链接等元素&#xff0c;以及用于交互的表单…

【操作系统不挂科】操作系统期末考试题库<1>(单选题&简答题&计算与分析题&应用题)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 操作系统不挂科 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 一.单项选择题&#xff08;每个空2分&#xff0c;共40分&#xff09; 1. 计算机的操作系统是一种&#xff08; B &#xff09;。 A. 应用软件…

Excel重新踩坑5:二级下拉列表制作;★数据透视表;

0、在excel中函数公式不仅可以写在单元格里面&#xff0c;还可以写在公式里面。 1、二级下拉列表制作&#xff1a; 2、数据透视表&#xff1a; 概念&#xff1a;通过拖拉就能实现复杂函数才能实现的数据统计问题。 概览&#xff1a;在插入选项中有个数据透视表&#xff0c;数…