ARM-异常与中断(四)

news2024/11/24 15:44:28

文章目录

    • 中断
      • 中断请求、中断源
      • 中断服务程序
      • 保存现场、恢复现场
      • 中断仲裁、中断优先级
      • 中断嵌套
    • 异常
    • 广义上的异常
      • 同步异常
      • 异步异常
        • 精确异步异常(Precise Asynchronous Exception)
        • 非精确异步异常(Imprecise Asynchronous Exception)
    • 异常处理流程

中断

中断(Interrupt)机制,即处理器在顺序执行程序指令流的过程中突然被别的请求打断而中止执行当前的程序,转而去处理别的事情,待其处理完了别的事情,然后重新回到之前程序中断的点继续执行之前的程序指令流,其要点如下

中断请求、中断源

打断处理器执行程序指令流的的“别的请求”便称之为中断请求(Interrupt Request),“别的请求”的来源便称之为中断源(Interrupt Source),中断源通常来自于外围设备。

中断服务程序

处理器转而去处理的“别的事情”便称之为中断服务程序(Interrupt Service Routine ISR)。

保存现场、恢复现场

中断处理是一种正常的机制,而非一种错误情形。处理器收到中断请求之后,需要保存当前程序的现场,简称为保存现场。等到处理完中断服务程序后,处理器需要恢复之前的现场,从而继续执行之前被打断的程序,简称为恢复现场。

中断仲裁、中断优先级

可能存在多个中断源同时向处理器发起请求的情形,因此需要对这些中断源进行仲裁,从而选择哪个中断源被优先处理,这种情况称为中断仲裁,可以给不同的中断分配优先级以便于仲裁,因此中断存在中断优先级的概念。

中断嵌套

如果处理器在处理某个中断过程中(执行该中断的 ISR之中),此时有一个优先级更高的新中断请求到来,此时处理器如何处理分两种情况

  • 第一种可能是处理器并不响应新的中断,而是继续执行当前正在处理的中断服务程序,待到彻底完成之后才响应新的中断请求,这种称为处理器不支持中断嵌套
  • 第二种可能是处理器中止当前的中断服务程序,转而开始响应新的中断,并执行新的中断的中断服务程序,如此便形成了中断嵌套(即前一个中断还没响应完,又开始响应新的中断),并且嵌套的层次可以有很多层。

Note:

  • 需要注意的是,假设新来的中断请求的优先级比正在处理的中断的优先级低(或者相同),则不管处理器是否支持中断嵌套,都不应该响应这个新的中断请求,处理器必须完成当前的中断服务程序之后才考虑响应新的中断请求(因为新中断请求的优先级并不比当前正在处理的中断优先级高)。

异常

异常(Exception)机制,即处理器在顺序执行程序指令流的过程中突然遇到了异常的事情而中止执行当前的程序,转而去处理异常,其要点如下

  • 处理器遇到的“异常的事情”称为异常(Exception)。异常与中断最大的区别在于中断往往是一种外因,而异常是由处理器内部事件或程序执行中的事件引起的,比如本身硬件故障,程序故障、非法指令,或者执行特殊的系统服务指令而引起的,简而言之是一种内因
  • 与中断服务程序类似,处理器也会进入异常服务处理程序。
  • 与中断类似,可能存在多个异常同时发生的情形,因此异常也有优先级,并且也可以发生多重异常的嵌套。

广义上的异常

如上一节所述,中断和异常最大的区别是起因内外有别。除此之外,从本质上讲,中断和异常对于处理器而言基本上是一个概念。
中断和异常发生时,处理器将暂停当前正在执行的程序,转而执行中断和异常处理程序;返回时,处理器恢复之前被暂停的程序。
因此中断和异常的划分是一种狭义上的划分。从广义上讲,中断和异常都被认为是一种广义上的异常。处理器广义上的异常,通常只分为同步异常(Synchronous Exception)和异步异常(Asynchronous Exception)。有些处理器将广义上的异常也叫做 Trap。

同步异常

同步异常是指由于执行程序指令流或者试图执行程序指令流而造成的异常。这种异常的原因能够被精确定位于某一条执行的指令。
同步异常另一个通俗的表现便是,无论程序程序在同样的环境下执行多少遍,每一次都能精确的复现出来。
例如,程序流中有一条非法的指令,那么处理器执行到该非法指令便会产生非法指令异常(Illegal Instruction Exception),能被精确地定位于这一条非法指令,并且能够被反复复现。

异步异常

异步异常是指那些产生原因不能够被精确定位于某条指令的异常。
异步异常另一个通俗的表现便是,程序在同样的环境下执行很多遍,每次发生异常的指令 PC 都可能会不一样。
最常见的异步异常是外部中断,外部中断的发生是由外围设备驱动的,一方面外部中断的发生带有偶然性,另一方面中断请求到达处理器之时,处理器的程序指令流执行到具体的哪一条指令带有偶然性。因此一次中断的到来可能会巧遇到某一条“正在执行的不幸指令”,而该指令便成了“背锅侠”。在它的指令 PC 所在之处,程序便停止执行,并转而响应中断去执行中断服务程序。但是当程序重复执行时,却很难会出现同一条指令反复“背锅”的精确情形。
对于异步异常,根据其响应异常后的处理器状态,又可以分为两种:

精确异步异常(Precise Asynchronous Exception)

指响应异常后的处理器状态能够精确反映为某一条指令的边界,即某一条指令执行完之后的处理器状态。外部中断是最常见的精确异步异常。

非精确异步异常(Imprecise Asynchronous Exception)

指响应异常后的处理器状态无法精确反映为某一条指令的边界,即可能是某一条指令执行了一半然后被打断的结果,或者是其他模糊的状态。读写存储器出错是一种常见的非精确异步异常,例如,写数据到 cache,然后该 cache 很久之后才被替换出来,写回外部存储器,但是写回外部存储器返回结果出错。此时处理器可能已经执行过了后续成百上千条指令,到底是哪一条指令当时写的这个地址的 cache ,不可能被精确定位。

异常处理流程

在这里插入图片描述
本文主要参考《手把手教你设计 CPU——RISC-V处理器》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DBA专属】MHA高可用数据库集群-----------一主一备两从一管理,一个VIP客户端

MHA高可用数据库集群 目录 环境配置: 所有操作系统均为centos 7.x 64bit 1、关闭防火墙:(所有服务器) 2.配置所有主机名映射(所有服务器) 3、同步时区 4.安装MHA node及相关perl依赖包(所有…

AutoSAR系列讲解(入门篇)4.1-BSW概述

BSW概述 一、什么是BSW 二、BSW的结构 1、微控制器硬件抽象层(MCAL) 2、ECU抽象层 3、服务层 4、复杂驱动 三、再将结构细分 一、什么是BSW 中文翻译就是基础软件层(Basic Software)。这个基础软件层实质上就是将整个ECU分…

【斯坦福】FrugalGPT: 如何使用大型语言模型,同时降低成本并提高性能

FrugalGPT: 如何使用大型语言模型,同时降低成本并提高性能 作者:Lingjiao Chen, Matei Zaharia, James Zou 引言 本文介绍了一种新颖的方法,旨在解决使用大型语言模型(LLM)时面临的成本和性能挑战。随着GPT-4和Chat…

链路聚合综合实战

拓扑 需求 -PC1和PC3属于vlan 10、PC2和PC4属于vlan 20 -设备之间配置lacp模式的链路聚合,并确保同vlan之间的主机可以互通 配置步骤 1)PC配置IP地址 2)所有交换机创建vlan10 和vlan20 3)交换机和PC互联的接口设置为access &am…

python数据分析之连接MySQL数据库并进行数据可视化

大家好,我是带我去滑雪! 本期将熟悉MySQL数据库以及管理和操作MySQL数据库的数据库管理工具Navicat Premium,然后在python中调用MySQL数据库进行数据分析和数据可视化。 目录 1、MySQL数据库与数据库管理工具Navicat Premium 2、调用MySQL…

EasyCVR如何实现国标级联无人机推送的RTMP推流通道?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力,可在复杂的网络环境中&#xff0c…

el-date-picker禁用指定日期之前或之后的日期

一、elementUI中el-date-picker禁用指定日期之前或之后的日期 通过配置picker-options配置指定禁用日期&#xff08;pickerOptions写到data里面&#xff09; <el-date-pickerv-model"date"type"date"size"small"value-format"yyyy-MM-d…

Linux-passwd或shadow删了怎么办?

passwd或者shadow被删除了怎么办 passwd和shadow被删了&#xff0c;可以启用营救模式进行补救&#xff0c;原因是这两个文件都有备份。 先将光驱的自动启动勾选。 将Boot的引导顺序改变下&#xff0c;将光驱引导顺序放到最前面。 选择Troubleshootin可以从名字来知道&#…

广州华锐互动:机电专业VR模拟实操教学平台提供沉浸式的实践操作和训练机会

虚拟现实(VR)技术是一种先进的技术&#xff0c;可以应用于机电专业的培训中。以下是VR技术应用到机电专业培训的一些好处&#xff1a; 模拟实际操作环境&#xff1a;VR技术可以创建一个虚拟的环境&#xff0c;模拟真实的机械和电气设备的操作环境。这使得学生可以在安全的环境…

Python最基础语法

文章目录 一、简介1、Python安全路径2、Python开发工具(PyCharm) 二、PyCharm使用1、新建项目位置2、Hello World3、查看python版本4、PEP8规范 三、标识符和关键字四、基本数据类型1、数据类型2、多数据赋值&#xff1a;3、标准数据类型4、格式化输出5、输入(input)6、格式转换…

电商系统架构设计系列(四):流量大、数据多的「商品详情页系统」该如何设计?

一个电商的商品系统&#xff0c;主要功能就是增删改查商品信息。 上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;流量大、数据多的商品详情页系统该如何设计&#xff1f; 今天这篇文章&#xff0c;主要聊一下&#xff0c;如何设计一个快速、可靠的存储架构支撑商品系…

七、一百零二类花分类项目实战

一、准备数据集 一百零二类花数据集下载 flower_data包括train和valid文件&#xff0c;分别存放102个文件&#xff0c;对应102种类别的花 cat_to_name.json为类别和花品种键值对 将压缩包进行解压&#xff0c;跟项目放到同级路径下 二、导包 若遇到报错&#xff0c;不存…

网络链路聚合

这里写目录标题 链路聚合什么是链路聚合&#xff1f;为什么要进行链路聚合&#xff1f;Linux网卡bonding的7种模式模式一&#xff1a;balance-rr 轮询均衡模式模式二&#xff1a;active-backup 主备策略模式模式三&#xff1a;balance-xor 平衡策略模式四&#xff1a;broadcast…

【python】枚举的基本使用,及如何实现枚举属性的自增长

▒ 目录 ▒ &#x1f6eb; 问题描述环境 1️⃣ 枚举的基本使用自定义枚举成员的值枚举值唯一&#xff1a;unique枚举成员的别名&#xff1a;property枚举成员的元数据 2️⃣ 实现枚举属性的自增长python3.6python3.5.2python2不支持enum模块 &#x1f6ec; 结论&#x1f4d6; 参…

智慧医疗救护车数据采集、远程管理物联网方案-5G工业路由器应用

随着5G通信技术发展成熟&#xff0c;逐渐普遍应用于物联网中&#xff0c;救护车是医疗中不可缺少的部分&#xff0c;在救护车的物联网中具备车辆定位、数据采集、在线传输、远程监控等功能&#xff0c;5G工业路由器需要对救护车提供全程联网&#xff0c;实现智慧医疗的信息化、…

【JUC进阶】08. 重量级锁

目录 1、前言 2、重量级锁 3、数据结构和控制流程 3.1、Monitor 对象 3.2、控制流程 4、性能分析 5、同其他锁的对比 1、前言 前面我们介绍了偏向锁&#xff0c;轻量级锁&#xff0c;自旋锁相关知识。初次之外&#xff0c;锁升级过程还会涉及到重量级锁。重量级锁是并发…

基于Java珠宝首饰交易平台设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

新品预告——旗舰级DG4Pros最详技术解析及应用方案介绍

旗舰级DG4Pros RIY-DG4Pros是目前睿铂性能指标最高的一款全画幅倾斜摄影相机&#xff0c;其核心光学组件部分由睿铂结合多年来的用户反馈与对倾斜摄影技术的探索成果&#xff0c;完全自主研发设计&#xff0c;技术水平领先于市面同类产品。相机镜头内置双高斯结构和超低色散非…

Spring Boot 中的 Type-safe Configuration Properties:原理、用法与示例

Spring Boot 中的 Type-safe Configuration Properties&#xff1a;原理、用法与示例 前言 Spring Boot 是一个快速开发 Spring 应用程序的框架&#xff0c;它提供了很多有用的功能和特性。其中&#xff0c;Type-safe Configuration Properties 是一个常用的功能&#xff0c;…

基于STL的演讲比赛流程管理

比赛规则: 学校举行一场演讲比赛&#xff0c;共有12个人参加。比赛共两轮&#xff0c;第一轮为淘汰赛&#xff0c;第二轮为决赛。每名选手都有对应的编号&#xff0c;如10001~10012 比赛方式:分组比赛&#xff0c;每组6个人&#xff1b; 第一轮分为两个小组&#xff0c;整体按…