RISC-V特权架构 - 中断与异常概述

news2024/12/25 0:35:21

RISC-V特权架构 - 中断与异常概述

  • 1 中断概述
  • 2 异常概述
  • 3 广义上的异常
    • 3.1 同步异常
    • 3.2 异步异常
    • 3.3 常见同步异常和异步异常

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。

1 中断概述

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

  • 打断处理器执行程序指令流的“别的请求”便称之为中断请求(Interrupt Request),“别的请求”的来源便称之为中断源(Interrupt Source)。中断源通常来自于外围硬件设备。
  • 处理器转而去处理的“别的事情”便称之为中断服务程序(Interrupt Service Routine,ISR)。
  • 中断处理是一种正常的机制,而非一种错误情形。处理器收到中断请求之后,需要保存当前程序的现场,简称为保存现场。等到处理完中断服务程序后,处理器需要恢复之前的现场,从而继续执行之前被打断的程序,简称为“恢复现场”。
  • 可能存在多个中断源,同时向处理器发起请求的情形,因此需要对这些中断源进行仲裁,从而选择哪个中断源被优先处理。此种情况称为“中断仲裁”,同时可以给不同的中断分配优先级以便于仲裁,因此中断存在着“中断优先级”的概念。
  • 还有一种可能是,处理器已经在处理某个中断过程中(执行该中断的ISR 之中),此时有一个优先级更高的新中断请求到来,此时处理器该如何是好呢?有如下两种可能。

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

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

RISC-V架构默认不支持中断嵌套。

2 异常概述

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

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

3 广义上的异常

如上文所述,中断和异常最大的区别是起因内外有别。除此之外,从本质上来讲,中断和异常对于处理器而言基本上是一个概念。中断和异常发生时, 处理器将暂停当前正在执行的程序,转而执行中断和异常处理程序;返回时,处理器恢复执行之前被暂停的程序。

因此中断和异常的划分是一种狭义的划分。从广义上来讲,中断和异常都被认为是一种广义上的异常。处理器广义上的异常,通常只分为同步异常(Synchronous Exception)和异步异常(Asynchronous Exception)。

3.1 同步异常

同步异常,是指由于执行程序指令流或者试图执行程序指令流而造成的异常。这种异常的原因,能够被精确定位于某一条执行的指令。同步异常的另外一个通俗的表象便是,无论程序在同样的环境下执行多少遍,每一次都能精确地重现出来。

譬如,程序流中有一条非法的指令,那么处理器执行到该非法指令便会产生非法指令异常(Illegal Instruction Exception),能被精确地定位于这一条非法指令,并且能够被反复重现。

3.2 异步异常

异步异常,是指那些产生原因不能够被精确定位于某条指令的异常。异步异常的另外一个通俗的表象便是,程序在同样的环境下执行很多遍,每一次发生异常的指令PC 都可能会不一样。

最常见的异步异常是“外部中断”。比如,外部中断的发生,是由外围设备驱动的,一方面外部中断的发生带有偶然性,另一方面中断请求抵达于处理器核之时,处理器的程序指令流执行到具体的哪一条指令更带有偶然性。因此一次中断的到来,可能会巧遇到某一条“正在执行的不幸指令”,而该指令便成了“背锅侠”。在它的指令PC 所在之处,程序便停止执行,并转而响应中断去执行中断服务程序。但是当程序重复执行时,却很难会出现同一条指令反复“背锅”的精确情形。

对于异步异常,根据其响应异常后的处理器状态,又可以分为两种:
(1)精确异步异常(Precise Asynchronous Exception):指响应异常后的处理器状态,能够精确反映为某一条指令的边界,即某一条指令执行完之后的处理器状态。
(2)非精确异步异常(Imprecise Asynchronous Exception):指响应异常后的处理器状态,无法精确反映为某一条指令的边界,即可能是某一条指令执行了一半然后被打断的结果,或者是其他模糊的状态。

3.3 常见同步异常和异步异常

常见的典型同步异常和异步异常,如下表所示,此表可以帮助读者更加理解同步异常和异步异常的区别。
在这里插入图片描述在这里插入图片描述


参考文档:

  • 《手把手教你设计CPU.RISC-V处理器》

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

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

相关文章

Biotin aniline,生物素苯胺,用于研究蛋白质结构和功能

您好,欢迎来到新研之家 文章关键词:769933-15-5,Biotin aniline,生物素苯胺,Biotin-aniline,生物素-苯胺 一、基本信息 【产品简介】:Biotin aniline is composed of three parts: biotin, w…

【学习笔记】Diffusion扩散模型

导读 Diffusion models是现在人工智能领域最火的方向之一,并引爆了AIGC领域,一大批创业公司随之诞生。 AIGC(AI-Generated Content):人工智能创作内容的生产方式。 扩散模型Diffusion 扩散模型Duffison的训练过程 …

leetcode 热题 100_移动零

题解一: 双指针遍历:将非零的值往数组前端依次放置,将放置之后数组后端多余的位置都置为0,参考下图(来源. - 力扣(LeetCode)) class Solution {public void moveZeroes(int[] nums)…

数据库进阶——如何提升数据库的安全性,以MySQL和Redis加固为例

目录 引出数据库加固加固思路MySQLRedis Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 数据库进阶——如何提升数据库的安全性,以MySQL和Redis加固为例 数据库加固 加固思路 账号配置 应按照用户分配账号&…

B树系列(详解)

目录 一、B-树 二、B树 三、B*树 四、时间复杂度 五、Mysql与B树系列 一、B-树 首先再说B树的性质以及其他的之前,先要说一声,好多人都把这个树叫B减树,其实不是,他就叫B树,至于原因我觉的没必要再这个名字上纠结…

LED制造企业元亨光电牵手盘古信息,开启数字化转型新篇章

在多媒体时代,LED产品已经融入我们生活的方方面面,无论是在商场、超市、机场,还是在公交站、马路边、隧道内,它们的身影无处不在。 坐落在深圳宝安区福永,拥有40000㎡ 研发生产LED产品基地的深圳市元亨光电股份有限公…

哪个有名的工具可以安全记事 私密记事本笔记推荐

在这个数字化的时代,我们的生活已经离不开各种记事工具。它们帮助我们记录生活中的点点滴滴,无论是工作上的重要事项,还是个人的私密心情。然而,当我在寻找一个能够安心记录私密事情的工具时,安全性成为了我最关心的因…

Tomcat相关基础以及安装运行

目录 一、web概念 二、常见的web服务器 三、Tomcat 安装 下载: 安装: 四、Tomcat 目录结构 五、Tomcat 启动停止 一、web概念 软件架构: B/S: 浏览器/服务器端 ‐‐‐‐‐‐‐‐‐‐‐‐> 京东,网易&#xff0c…

buuctf_reverse_新年快乐+内涵的软件

新年快乐 题目:新年快乐.exe 这玩意有壳!我去down了upx脱壳 开始放exeinfope的图片没截,我记得下载完upx后exeinfoPE显示还不一样。留了一张脱壳的实验图片: 然后放IDA 我是笔记本键盘,shiftFnF12转字符串 诶呦&…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:位置设置)

设置组件的对齐方式、布局方向和显示位置。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 align align(value: Alignment) 设置容器元素绘制区域内的子元素的对齐方式。 卡片能力: 从API…

判断子序列[简单]

优质博文:IT-BLOG-CN 一、题目 给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如ace是abcde的一个子序列&#xff0c…

html样式排版

<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…

C++菱形继承_多态

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;http://t.csdnimg.cn/362T6⏪   &#x1f69a;代码仓库:要相信光/C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言…

容联云入选IDC生成式AI图谱,多个案例被评典型应用

随着生成式AI进入商业化初期&#xff0c;国际数据公司&#xff08;IDC&#xff09;于近日发布了《IDC Market Glance: 中国生成式AI市场概览》报告&#xff0c;报告分析了当前市场的整体情况以及市场格局&#xff0c;通过中国生成式AI市场生态图谱V1.0和代表厂商分析&#xff0…

BUUCTF---另外一个世界1

1.这是一道杂项题&#xff0c;也是我觉得最值得记录的一道题。 2.话不多说&#xff0c;题目描述&#xff08;真的是另一个世界&#xff09; 3.下载附件&#xff0c;是一张图片 4.尝试了查看属性&#xff0c;以及在记事本中打开看看有没有什么有用的信息&#xff0c;发现没什么…

C# WPF如何自定义控件ComboBox

在WPF开发中&#xff0c;经常遇到需要修改原生ComboBox的控件样式。 对于新手来说&#xff0c;修改控件样式比较麻烦。 修改的最终样式如下&#xff1a; 你可以利用如下代码模板&#xff0c;修改为你自己想要的样式。 <Style TargetType"{x:Type ComboBox}"&…

CSP-202112-3-登机牌条码

CSP-202112-3-登机牌条码 解题思路 一、.处理大小写和数字 初始化变量&#xff1a;flag: 用来标识当前处理的字符类型&#xff0c;0代表大写字母&#xff0c;1代表小写字母&#xff0c;2代表数字。 大小写字母和数字的处理&#xff1a; 小写字母(a < it && it &l…

新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台&#xff0c;满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕&#xff0c;降低用户开发和运维成本&#xff0c;让数据处理平民化&#xff0c;助力用户以更便捷、高效的方式去挖掘数…

基带信号处理设计原理图:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

基于6U VPX的双TMS320C6678Xilinx FPGA K7 XC7K420T的图像信号处理板 综合图像处理硬件平台包括图像信号处理板2块&#xff0c;视频处理板1块&#xff0c;主控板1块&#xff0c;电源板1块&#xff0c;VPX背板1块。 一、板卡概述 图像信号处理板包括2片TI 多核DSP处理…

anaconda简介以及安装(Windows)

介绍 Anaconda是一个开源的Python发行版本&#xff0c;它是一个打包的集合&#xff0c;里面预装了conda、Python、众多packages、科学计算工具等。Anaconda的目的是方便使用Python进行数据科学研究&#xff0c;它涵盖了数据科学领域常见的Python库&#xff0c;并且自带了专门用…