第二十七期-ARM64体系的异常与中断(1)

本文由罗宇哲介绍,探讨了ARM64体系中的异常与中断,包括同步异常、异步异常(如外部中断请求和快速中断请求)、系统错误以及软件中断。异常发生时,CPU保存现场并运行异常处理程序,完成后恢复现场继续执行。ARM64的异常级别有各自的异常向量表,异常向量表的起始地址存储在VBAR_ELn寄存器中。下一期将介绍中断和ARM的通用中断控制器。
摘要由CSDN通过智能技术生成

作者:罗宇哲,中国科学院软件研究所智能软件研究中心

上一章中我们介绍了与ARM体系结构有关的一些基础知识,这一章我们将介绍openEuler中异常与中断的相关知识。首先我们从处理器的视角出发,介绍一下ARM64体系中的异常与中断。

一、ARM64体系中的异常

在计算机术语中,异常通常指在程序运行过程中发生的异常事件[1]。 ARM64体系中的异常可以分为同步异常和异步异常。同步异常是由正在运行的指令或指令运行的结果造成的异常[3],而异步异常则不必由运行的指令造成从而可以在程序运行中的任意时刻发生。

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行[2]。在ARM64体系中中断包含外部中断请求(IRQ)和快速中断请求(FIQ)。外部中断请求是普通优先级的中断请求,快速中断请求是高优先级的中断请求。

外部中断请求和快速中断请求属于异步异常的范畴,除此之外异步异常还包含系统错误(SError)。系统错误是由硬件错误出发的异常,例如将脏数据从缓存行写回内存时异步触发的数据中止异常[3]。

软件中断是一类特殊的中断,它是一条CPU指令,用以陷入中断[4]。软件中断指令可以用于实现用户模式中对操作系统中特权模式的程序的调用,如ARM的SWI指令。软件中断常用于实现系统调用。

在异常发生时,CPU将保存异常现场和下一条将执行的指令的地址。然后CPU跳转到异常处理程序的入口处并运行异常处理程序。异常处理程序运行完成之后,CPU会恢复之前保存的异常现场,并跳转到异常发生时的下一条指令或异常发生的指令处继续执行。

ARM体系的主要异常中断如下表所示[3][5]&#x

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值