0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Armv8的同步异常、External abort等区别简析

冬至配饺子 来源:Arm精选 作者:baron 2023-11-23 17:13 次阅读

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 又是什么意思呢??

image.png

比较绕、比较难懂,咱们换一个说法:按照预期产生的异常称之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会返回的一个异常

image.png

注意,像MMU产生的异常,它属于 internalabort,它是同步异常。像未定义指令异常,它也是同步异常

4、External abort的理解

External Abort,可以同步异常,也可以是Serror

image.png
例如:

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

image.png

4、instruction abort、data abort

在aarch64架构中,instruction abort、data abort已然变成了同步异常中的一种。不再是单独的异常模型了。所以当出现instruction abort、data abort时,那么一定是同步异常,可能是internal abort,也可能是external abort,但终归是同步异常。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5249

    浏览量

    119172
  • SMC
    SMC
    +关注

    关注

    2

    文章

    85

    浏览量

    20172
  • SVC
    SVC
    +关注

    关注

    0

    文章

    33

    浏览量

    12040
  • MMU
    MMU
    +关注

    关注

    0

    文章

    91

    浏览量

    18158
  • ARMv8
    +关注

    关注

    1

    文章

    35

    浏览量

    14102
收藏 人收藏

    评论

    相关推荐

    ARM重新定义ARMv8新架构,ARMv8新架构特性解说

    本文从ARMv8-A产生的背景开始,对它进行一个简单的介绍,使大家从整体上,对ARMv8有一个简单的了解。
    的头像 发表于 10-08 17:02 1w次阅读
    ARM重新定义<b class='flag-5'>ARMv8</b>新架构,<b class='flag-5'>ARMv8</b>新架构特性解说

    一文帮你梳理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位元市场。ARMv8ARMv7架构为基础,并内含64位元指令集,预估可将32/64位元应用优势极大化。
    发表于 11-01 09:32 1442次阅读

    TRACE32支持ARMv8架构

      ARMv8架构是首个包括64位执行模式的ARM架构,允许处理器将64位执行模式与32位执行模式相结合。开发该版本ARM指令系统的关键技术之一是将ARM处理器工艺的高能效优势融入64位计算,并获得更大的可用虚拟地址空间。ARMv8架构在
    发表于 09-12 19:01 11次下载

    Armv8架构及虚拟化介绍

    ARMv8基本概念 (1)执行状态(execution state):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理及编程模型ARMv8体系结构定义了
    的头像 发表于 04-16 10:45 5773次阅读

    AFE8092帧同步特性

    AFE8092帧同步特性
    的头像 发表于 08-24 13:37 553次阅读
    AFE8092帧<b class='flag-5'>同步</b>特性<b class='flag-5'>简</b><b class='flag-5'>析</b>

    ARMv8工作模式有哪些

    ARMv8 工作模式 ARMv8 没有 Privilege level 的概念,取而代之的是 Exception level(异常级别),简称为EL,用于描述特权级别,一共有 4 个级别:EL0
    的头像 发表于 09-11 16:34 1173次阅读
    <b class='flag-5'>ARMv8</b>工作模式有哪些

    armv8 u-boot的启动介绍

    先看arm官网提供的一张图: 上图详细概括了arm官方推荐的armv8的启动层次结构: 官方将启动分为了BL1,BL2,BL31,BL32,BL33阶段,根据顺序,芯片启动后首先执行BL1阶段代码
    的头像 发表于 12-07 11:09 1377次阅读
    <b class='flag-5'>armv8</b> u-boot的启动介绍

    u-boot armv8链接脚本

    u-boot armv8链接脚本 在进行源码分析之前,首先看看u-boot的链接脚本,通过链接脚本可以从整体了解一个u-boot的组成,并且可以在启动分析中知道某些逻辑是在完成什么工作。 在
    的头像 发表于 12-07 11:19 440次阅读