【ARM】-异常与中断

news2024/11/15 13:59:47

文章目录

    • 中断
      • 中断请求、中断源
      • 中断服务程序
      • 保存现场、恢复现场
      • 中断仲裁、中断优先级
      • 中断嵌套
    • 异常
    • 广义上的异常
      • 同步异常
      • 异步异常
        • 精确异步异常(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/713694.html

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

相关文章

发展零碳数据中心,超聚变推动液冷规模商用

算力的发展犹如一体两面。 一方面,在数字经济、产业数字化和数字化转型中,算力发挥着关键的引擎作用;另一方面,持续增长的多元异构算力需求、不断提升的算力密度以及逐渐成体系的算力网络,也带来了不可低估的长期能耗…

Linux基础笔记

已经有很长很长一段时间没有更新帖子了,一眨眼2023 已经过半,这些日子里,有太多太多事情要做了,今年只更新了几篇,这几天刚好有空,浅浅更新一篇叭!~~~ 首先,Linux是一种开源的操作系…

测试开发工程必备技能之一:Mock的使用

目录 1. 背景 2. Mock是什么 3. Mock能做什么 4. Mock实现方式 5. Mock市面上常见的解决方案 6. Python下unittest.mock使用 总结: 1. 背景 在实际产品开发过程中,某个服务或前端依赖一个服务接口,该接口可能依赖多个底层服务或模块&…

K8S | 容器和Pod组件

对比软件安装和运行; 一、场景 作为研发人员,通常自己电脑的系统环境都是非常复杂,在个人的习惯上,是按照下图的模块管理电脑的系统环境; 对于「基础设施」、「主机操作系统」、「系统软件」来说,通常只做…

MYSQL根据标签查询数据

场景条件: 1.根据用户id查询到该id绑定的标签(可能是多个标签也可能是单个标签) 2.根据标签的id查询到绑定标签id的信息表 SELECT labelID FROM LRrelation WHERE relationID 1 SELECT * FROM notification SELECT * FROM notification…

解决GitHub下载速度太慢问题的方法汇总(持续更新,建议收藏)

文章目录 前言一、使用 git clone --depth1 来下载二、修改host文件解决三、谷歌浏览器插件加速四、油猴插件和脚本五、gitclone.com六、Github 加速下载链接七、Github 镜像访问八、使用码云下载参考资料,感谢以下文章 前言 Github上下载仓库或者克隆仓库&#xf…

运输层:TCP流量控制

1.运输层:TCP流量控制 笔记来源: 湖科大教书匠:TCP流量控制 流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。 实现方法:滑动窗口机制 移动发送窗口,因接收窗口大小为300&am…

C++思维,作业7.3

#include <iostream> #include <cstring> using namespace std; int monster_blood10000; //英雄 class Hero { protected:string name;int hp;int attck; public:Hero(){//cout << "Hero的无参构造" << endl;}Hero(string name,int hp,int …

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第七章

这一章内容有点丰富&#xff0c;多用了一些时间&#xff0c;实例就有四五个。 这章内容是真多啊&#xff01;&#xff08;学完之后又回到开头感叹&#xff09; 大脑分级处理机制&#xff1a; 将图像从基础像素到局部信息再到整体信息 即将图片由低级特征到高级特征进行逐级计…

代码评审的18个军规,收藏好!

前言 大家好&#xff01; 我们开发完需求&#xff0c;提测前&#xff0c;一般都需要代码评审。小伙伴们&#xff0c;你们知道代码评审&#xff0c;一般都有哪些军规嘛&#xff1f;今天田螺哥给你带来代码评审的18个军规。 公众号&#xff1a;捡田螺的小男孩 &#xff08;有田…

多肽试剂:151308-48-4,分子式C117H149N27O28,分子量2381.6,具有一定的稳定性

【产品描述】 多肽试剂&#xff08;CAS&#xff1a;151308-48-4&#xff09;一般多肽可以作为螯合剂进行科研实验&#xff0c;一般多肽试剂与其他肽类物质相同&#xff0c;多肽能完全溶解于水&#xff0c;具有一定的稳定性&#xff0c;酸&#xff0c;热组分不改变&#xff0c;…

引用,函数重构,类

1.类和结构体的区别 结构体是值类型&#xff0c;类是引用类型 结构体存在栈中&#xff0c;类存在堆中 结构体成员不能使用protected访问修饰符&#xff0c;而类可以 结构体成员变量申明不能指定初始值&#xff0c;而类可以 结构体不能申明无参的构造函数&#xff0c;而类可…

MongoDB负载均衡集群监控

对负载均衡的集群监控&#xff0c;不仅仅集中在对集群所有的资源、服务等进行监控&#xff0c;还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例&#xff0c;对逻辑层面的监控&#xff0c;就是模拟用户行为&#xff0c;访问集群数据&#xff0c;判断运行状态是否正常。 Mong…

基础电路知识

工作常用电路元器件知识 一、电阻 1.1 电阻的作用 **一、分压&#xff08;串联使用&#xff09;&#x1f617;*将需要的电压通过串联电阻分出来&#xff0c;大小按电阻的大小比例分配。 **二、分流&#xff08;并联使用&#xff09;&#xff1a;**某些电路中通过的电流较大&a…

浅析厂房仓库电气火灾的成因及对策

贾丽丽 安科瑞电气股份有限公司 上海嘉定201801 摘 要: 文章分析了厂房仓库电气火灾的成因及火灾特点 ,并有针对性地提出了预防火灾的对策。 关键词: 厂房仓库&#xff1b;电气火灾&#xff1b;成因&#xff1b;预防对策 0 前 言 随着国际经济的全球化,国内经济建设迅猛发…

枚举enum方法的使用

一.什么是枚举 我们学习过单例模式&#xff0c;即一个类只有一个实例。而枚举其实就是多例&#xff0c;一个类有多个实例&#xff0c;但实例的个数不是无穷的&#xff0c;是有限个数的。例如word文档的对齐方式有几种&#xff1a;左对齐、居中对齐、右对齐。开车的方向有几种&a…

CSS是什么简单理解

CSS是层叠样式表&#xff08;Cascading Style Sheets&#xff09;的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体&#xff0c;颜色&#xff0c;布局&#xff0c;大小&#xff0c;背景&#xff0c;边框等方面&#xff0c;使得网页的外观更…

《操作系统》- 操作系统的基本概念

目录 一、操作系统的概念1.1 操作系统的分类1.2 计算机系统的构成1.3 操作系统都做了哪些事 二、操作系统的目标和功能2.1 操作系统的目标2.2 操作系统的功能 三、操作系统的特征3.1 并发3.2 共享3.3 虚拟3.4 异步 一、操作系统的概念 1.1 操作系统的分类 UNIX是非常早期的操作…

【HTML】table 1px border,td文本超出隐藏

效果图 html代码 <table className{styles.conver_table} border{1}><thead><tr><th>序号</th><th>标题</th><th>操作</th></tr></thead><tbody>{new Array(20).fill({}).map((v, i) > {return …

优雅演进:探索低代码与全栈的完美结合

&#x1f49b;前情提要&#x1f49b; 本章节是番外篇的低代码平台的相关知识~ 接下来我们即将进入一个全新的空间&#xff0c;对代码有一个全新的视角~ 以下的内容一定会让你对低代码平台有一个颠覆性的认识哦&#xff01;&#xff01;&#xff01; 以下内容干货满满&#…