1、同步异常和异步异常的概念
具备以下3个行为的称之为同步异常:
- The exception is generated as a result of direct execution or attempted execution of an instruction.
- The return address presented to the exception handler is guaranteed to indicate the instruction that caused the exception.
- The exception is precise
其实就是说:
- 异常是由执行或尝试执行指令产生的
- 产生异常的那个位置是确定的,即每次执行到“那个指令处”就会产生
- 异常是precise的
具备以下3个行为的称之为异步异常:
- The exception is not generated as a result of direct execution or attempted execution of the instruction stream. The return address presented to the exception handler is not guaranteed to indicate the instruction that caused the exception.
- The exception is imprecise.
其实就是说:
- 异常不是由执行或尝试执行指令产生的
- 产生异常的那个位置不是确定的,即不知道执行到哪里,就产生了异常
- 异常是imprecise的
那么precise 和 imprecise 又是什么意思呢??

比较绕、比较难懂,咱们换一个说法:按照预期产生的异常称之precise,反之imprecise
2、系统中有哪些同步异常?
- 尝试执行UNDEFINED指令产生的任何异常,包括:
(1)、尝试在不适当的异常级别执行指令。
(2)、当指令被禁用时尝试执行指令。
(3)、尝试执行尚未分配的指令位模式。 - 非法执行状态异常。这些是由尝试执行指令引起的
PSTATE.IL为 1,(详细可参考D1-2486 页上的AArch64 状态的非法返回事件) - 使用未对齐的 SP 导致的异常。
- 尝试使用未对齐的 PC 执行指令导致的异常。
- 由异常生成指令SVC、HVC或SMC引起的异常。
- 尝试执行系统寄存器定义为被捕获到更高的异常级别。(详细可参考可配置的指令使能和禁止,在D1-2510 页)
- 由内存地址转换系统生成的指令中止与尝试相关联从产生故障的内存区域执行指令。
- 内存地址转换系统生成的数据中止与尝试读取或写入产生故障的内存。
- 由地址未对齐引起的数据中止。
- 如果实施FEAT_MTE2,则由标记检查故障引起的数据中止。。
- 所有调试异常:(1)、Breakpoint Instruction exceptions. (2)、Breakpoint exceptions. (3)、Watchpoint exceptions. (4)、Vector Catch exceptions. (5)、Software Step exceptions.
- 在支持捕获浮点异常的实现中,由捕获的IEEE 浮点异常引起的异常
- 在某些实现中,外部中止。外部中止是失败的内存访问,包括访问地址转换期间发生的内存系统的那些部分。
3、Serror的理解
Serror(也称System Error),是异步异常的一种,一般是来自 Externalaborts, 当memory system访问时bus上产生的 Externalaborts 。例如
- 访问内存被TZC挡住时,bus会返回的一个异常

注意,像MMU产生的异常,它属于 internalabort,它是同步异常。像未定义指令异常,它也是同步异常
4、External abort的理解
External Abort,可以同步异常,也可以是Serror

例如:
- Instruction Abort 可能是内部同步异常,也可能是同步External Abort
- Data Abort 可能是内部同步异常,也可能是同步External Abort (即 External abort 可以属于同步异常哦)

4、instruction abort、data abort
在aarch64架构中,instruction abort、data abort已然变成了同步异常中的一种。不再是单独的异常模型了。所以当出现instruction abort、data abort时,那么一定是同步异常,可能是internal abort,也可能是external abort,但终归是同步异常。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
寄存器
+关注
关注
31文章
5619浏览量
130393 -
SMC
+关注
关注
2文章
92浏览量
21659 -
SVC
+关注
关注
0文章
33浏览量
12725 -
MMU
+关注
关注
0文章
92浏览量
19288 -
ARMv8
+关注
关注
1文章
37浏览量
14735
发布评论请先 登录
相关推荐
热点推荐
一文帮你梳理Cortex与ARMv8等基础概念
到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】1. 从0开始学ARM-安装Keil MDK uVision集成开发环境
发表于 12-14 08:20
ARMv8架构资料分享
,大大提升了处理器的性能。从目前的的了解来看,基本上 ARMv8 与上代架构的差别是非常大的。除了 A64 指令集之外,还有许多地方都有较大改动,下面列出几个目前比较关注的点: · 执行状态与异常级别
发表于 03-21 14:50
ARMv8架构的两种执行状态分别是什么
、A64与A32的切换对于A32来说,ARM和thumb的切换,通过bx指令即可切换。但是对于A64和A32两种执行状态,只能通过异常,进行切换。ARMv8对EL切换,进行了以下的限定:◾切换到低EL
发表于 04-06 10:49
探讨一下ARMv8的AArch32 PE模式
ARMv8,定义了异常等级,来进行权限控制。分别是EL0,EL1,EL2,EL3。对于AArch32,ARMv8定义了9种PE模式,来确执行权限,不使用EL。对于AArch64,不支持PE模式
发表于 04-06 10:57
ARMv8架构概述
Armv8 OverviewARMv7与Armv8的升级示意如下:Aarch64指令集Aarch64的32个通用寄存器引用和描述如下,与Aarch32寄存器相比如下,在ARM 32位系统中,函数参数
发表于 05-13 10:31
Armv8.1-M PAC和BTI扩展简析
1、Armv8.1-M PAC和 BTI 扩展简析Armv8-M通过Trustzone for Armv8-M, Memory Protec
发表于 08-05 14:56
ARMv8 architecture里的Memory aborts简析
translation regime. External abort: Any memory system fault other than a Debug exception, an Alignment fault
发表于 03-21 14:28
ARM推新品:ARMv8首次支援64位元指令集
处理器授权大厂ARM于上周(10/27)公布最新处理器规格ARMv8架构,一举将其产品线推入64位元市场。ARMv8以ARMv7架构为基础,并内含64位元指令集,预估可将32/64位元应用优势极大化。
发表于 11-01 09:32
•1790次阅读
TRACE32支持ARMv8架构
ARMv8架构是首个包括64位执行模式的ARM架构,允许处理器将64位执行模式与32位执行模式相结合。开发该版本ARM指令系统的关键技术之一是将ARM处理器工艺的高能效优势融入64位计算,并获得更大的可用虚拟地址空间。ARMv8架构在
发表于 09-12 19:01
•11次下载
Armv8架构及虚拟化介绍
ARMv8基本概念
(1)执行状态(execution state):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理及编程模型等。ARMv8体系结构定义了
ARMv8工作模式有哪些
ARMv8 工作模式 ARMv8 没有 Privilege level 的概念,取而代之的是 Exception level(异常级别),简称为EL,用于描述特权级别,一共有 4 个级别:EL0
armv8 u-boot的启动介绍
先看arm官网提供的一张图: 上图详细概括了arm官方推荐的armv8的启动层次结构: 官方将启动分为了BL1,BL2,BL31,BL32,BL33阶段,根据顺序,芯片启动后首先执行BL1阶段代码
u-boot armv8链接脚本
u-boot armv8链接脚本 在进行源码分析之前,首先看看u-boot的链接脚本,通过链接脚本可以从整体了解一个u-boot的组成,并且可以在启动分析中知道某些逻辑是在完成什么工作。 在
ARMv8体系结构入门(附流程图+脑图)
ARMv8是 手机、平板、甚至部分服务器里处理器的“底层设计蓝图” ——它是ARM公司推出的第一代支持64位计算的架构,能让设备同时用大内存、跑新程序和旧程序。下面用“大白话+图”拆解它的核心逻辑
Armv8的同步异常、External abort等区别简析
评论