RISC-V架构——中断处理和中断控制器介绍

news2024/9/24 23:22:11

1、ARM架构中断机制介绍

本文不是从零开始讲解中断,对于中断的基本知识不再赘述,对中断不是很了解可以先学习ARM中断的文章。参考博客:《ARM架构的外部中断介绍(S5PV210芯片)》;

2、RIAC_V架构的中断控制器架构

在这里插入图片描述

(1)CLINT:负责处理器核内部产生的中断,包括软件中断和时钟中断,这些中断都是不依赖外部硬件的;
(2)PLIC:负责外部中断的调度。比如:可以给外部中断设置优先级,当多个外部中断同时发生时,PLIC按优先级进行排序,将高优先级的中断号发生到处理器核进行处理;

3、中断处理中的关键问题

3.1、如何注册异常处理函数?

3.1.1、异常向量表基地址寄存器:mtvec寄存器

在这里插入图片描述

(1)将异常处理函数的地址写到mtvec寄存器中,低两位是模式位;
(2)当发生陷入时,硬件会自动跳转到mtvec寄存器中保存的函数地址执行;
补充:S模式也是类似的,有一个stvec寄存器;

3.1.2、异常向量表:直接访问模式

当M模式/S模式发生陷入时,硬件会自动跳转到异常向量表基地址寄存器中保存的地址处执行,需要在异常处理函数中读取mcause/scause寄存器开查询异常或者中断触发的原因;

3.1.2、异常向量表:向量访问模式

在这里插入图片描述

(1)中断触发后,同步异常会跳转到BASE(异常向量表基地址寄存器中保存的地址)处执行,异步异常(中断)会跳转到“BASE + 4 x 中断号”处执行。
(2)同步异常还是需要去查询mcause寄存器来知道是发生的哪个异常,而异步异常则是硬件直接跳转到对于的地址处执行。比如:发生M模式下的时钟中断,硬件会跳转到“BASE + 4 x 7”地址处执行。
总结:向量访问模式下,异步异常的处理效率会更高,因为是硬件直接跳转,但是构建异常处理函数也会更复杂;

3.2、发生异常时怎么跳转到异常处理函数执行?

(1)首先异常发生时跳转到异常处理函数时硬件完成的,软件只需要提前将异常处理函数地址写到异常向量表基地址寄存器中;
(2)硬件在跳转前会做一些处理。比如:报错当前PC到mepc中,把异常类型更新到mcause中等等;

3.3、怎么保护/恢复中断现场?

在异常处理函数的开始阶段保存异常上下文到栈中,包括通用寄存器、部分CSR寄存器;然后执行真正的处理异常的函数,异常处理完成,在返回前将栈中保存的异常上下文恢复;

3.4、异常处理函数中,怎么区分是哪个中断或者哪个异常?

进入到异常处理函数后,查询mcause和scause寄存器。

4、中断委托和中断注入

参考博客:《RISC-V架构——中断委托和中断注入》;

5、PLIC:中断控制器

5.1、中断控制器初始化

(1)设置中断优先级阈值。当发生的外部中断小于阈值时会被屏蔽,不会上报到处理器进行处理;
(2)设置各个中断的优先级和使能;

5.2、中断控制器工作流程

(1)当发生大于阈值的中断后,首先跳转到异常处理函数处执行,判断属于外部中断;
(2)读取中断请求寄存器(claim),查询发生的哪个外部中断;
(3)调用对应外部中断的处理函数;
(4)处理完中断后,写中断完成寄存器(complete),告诉PLIC中断控制器该中断已经处理完成;

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

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

相关文章

如何运用设计模式中的享元模式

文章目录 🌟 如何将设计模式中的享元模式运用到生活当中🍊 什么是享元模式🍊 生活中的应用🎉 衣物🎉 图书馆 🍊 总结 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博…

WORD中的表格内容回车行距过大无法调整行距

word插入表格,编辑内容,换行遇到如下问题: 回车后行距过大,无法调整行距。 解决方法(并行): 方法1:选中要调整的内容,菜单路径:“编辑-清除-格式” 方法2&am…

Unity3D 基础——WASD控制物体移动

using System.Collections; using System.Collections.Generic; using UnityEngine;public class MotionControl : MonoBehaviour {public float speed 3f; //定义一个速度// Start is called before the first frame updatevoid Start(){}// Update is called once per fram…

一文读懂MT4:从小白到专家,MT4教程全解析!

亲爱的读者,欢迎来到这篇全面解析MT4交易平台的文章。无论你是刚刚接触金融交易,还是已经有一定经验的投资者,这篇文章都将为你提供深入浅出的MT4使用指南。通过阅读本文,你将能够全面了解并掌握MT4交易平台的使用技巧和操作方法。…

JAVA 链式编程和建造者模式的使用(lombok的使用)

0.说明 0.1 链式编程 链式编程的原理是返回一个this对象,也就是返回对象本身,从而达到链式效果。这样可以减少一些代码量,是java8新增的内容。 此处主要介绍在新建对象使用链式编程更加方便的创建对象。链式编程的一些常见用法可以看这个&a…

使用scapy 分析报文

比wireshark 更 happy udp 就简易的多,tcp 可能在设置bpf 时 多加几个条件 由于协议分析是手写的,所以可以对数据包的交互记录到excel 中再次进行分析

2024年天津中德应用技术大学专升本物流管理专业课考试大纲

天津中德应用技术大学物流管理专业(高职升本科)2024年专业基础考试大纲 一、试卷类型 物流管理专业升本专业课考试共1套试卷,总分200分,考试时间为2小时。内容包含仓储与配送管理40%、物流基础30%,运输管理30%&#…

双十一期间高预算广告增加,开发者如何精细化运营才能达到抢量增收目标?

随着双十一时间节点的临近,“双十一”大促也迎来了推广高峰,通常,大家总是认为推广高峰就是媒体收益高峰,但很多在变现的开发者都深有体会的是,广告主的投放高峰并不意味着收益高峰,很多开发者总结以往经验…

博通BCM575系列RDMA网卡驱动bnxt_re分析(一)

简介 整个BCM系列驱动分成以太网部分(bnxt_en.ko)和RDMA部分(bnxt_re.ko), 两个模块之间通过内核的auxiliary_bus进行管理.我们主要分析下bnxt_re驱动. 代码结构 这个驱动的核心是 qplib_fp.c, 这个文件主要包含了驱动的数据路径, 包括Post Send, Post Recv, Poll CQ流程的实…

项目管理-2023西电网课课后习题答案-第四章

文章目录 第四章答案1-1011-20 [✅] 第一章答案[✅] 第二章答案[✅] 第三章答案[✅] 第四章答案[✅] 第五章答案 第四章答案 1-10 11-20

在 history 模式下,为什么刷新页面会出现404?

1、原因 因为浏览器在刷新页面时,它会向服务器发送 GET 请求,但此时服务器并没有配置相应的资源来匹配这个请求,因此返回 404 错误。 2、解决方案 为了解决这个问题,我们需要在服务器端进行相关配置,让所有的路由都指…

质子 8.0-4 发布,支持更多 Linux 上的 Windows 游戏

导读Valve 近日发布了 Proton 8.0-4,这是 Steam Play 基于 Wine 和其他组件的开源兼容工具的最新版本,可让 Linux 用户玩 Windows 游戏。 在 Proton 8.0-3 发布两个半月后,Proton 8.0-4 正式支持更多 Windows 游戏在 Linux 上运行&#xff0c…

怎么禁止U盘拷贝电脑资料

怎么禁止U盘拷贝电脑资料 现如今U盘已经成为了人们日常传输文件的主要方式之一,U盘在给我们提供便利的同时,也带来了一些安全隐患,比如U盘可以轻松地复制电脑文件,这可能会导致机密信息泄露。因此,本文将介绍一些方法…

2023-10学习笔记

1.sql注入 不管是上一篇博客,通过java代码执行sql 还是我们常用的Mybatis的#{}和${} 都会提到sql注入的问题 1.1啥是sql注入 应该知道是说传入无关的参数,比如本来是想要一个where条件查询参数 但是你拼了一个drop 比如 原来的sql select * from…

经典卷积神经网络 - ResNet

ResNet是一种残差网络,咱们可以把它理解为一个子网络,这个子网络经过堆叠可以构成一个很深的网络。 我们一直在加深神经网络,但是加深不一定只会带来好处。 残差块 串联一个层改变函数类,我们希望能扩大函数类残差块加入快速通…

Unity的碰撞检测(三)

温馨提示:本文基于前一篇“Unity的碰撞检测(二)”继续探讨两个游戏对象具备刚体的碰撞检测,阅读本文则默认已阅读前文。 (一)测试说明 在基于两个游戏对象都具备碰撞器和刚体且属性一致的条件下,若二者刚体的BodyType…

常用数据分析可视化图表解析之【雷达图】

雷达图(Radar Chart) 基础介绍 雷达图是一种常用的数据可视化图表,通过使用多边形的边和顶点来表示多个变量或维度的数据。每个变量或维度对应于雷达图的一个轴,数据值则通过距离中心点的距离来表示。 雷达图可以直观地展示不同…

为何各大厂现在只招测试开发了?

近期闲着无聊晚上有空会刷下boss,发现现在各种互联网大厂绝大部分测试相关岗位都变成了测试开发工程师,这就是说就算最后是被拉去做业务测试,也得具备测试开发的能力了,这是间接把行业门槛变高了??那不会测…

项目管理-2023西电网课课后习题答案-第五章

文章目录 第五章答案1-10 [✅] 第一章答案[✅] 第二章答案[✅] 第三章答案[✅] 第四章答案[✅] 第五章答案 第五章答案 1-10

Vue标准插槽和作用域插槽区别与用法详解

文章目录 1. 标准插槽(Standard Slots)2. 作用域插槽(Scoped Slots)3.标准插槽Vs作用域插槽4.作用域插槽高级用法1. 作用域插槽中的默认值2. 作用域插槽的多个插槽3. 作用域插槽的动态插槽名4. 作用域插槽中的函数传递 5.作用域插…