当前位置: 首页 > news >正文

RISC-V AIA SPEC学习(四)

第五章 Interrupts for Machine andSupervisor Levels

核心内容​​

1.主要中断类型与默认优先级:​​

    • 定义了机器级别(M-level)和监管者级别(S-level)的标准中断类型(如MEI、SEI、MTI等)。
    • 默认优先级规则:本地中断(如软件/定时器)优先级高于外部中断,RAS事件(如低/高优先级错误)具有可配置优先级。

2.机器级别中断处理:​​

    • ​​mtopi CSR​​:报告当前最高优先级的中断(包含身份和优先级),用于中断处理流程。
    • 优先级配置:通过间接寄存器(miselect/mireg)设置每个主要中断的优先级(0x30-0x3F范围)。

3.监管者级别中断过滤与虚拟中断:​​

    • ​​mvien/mvip CSR​​:过滤S-level中断,允许机器模式注入虚拟中断到监管者模式。
    • 例如,当mvien的某位设为1时,对应虚拟中断将出现在S-level的sip寄存器中。

4.WFI指令行为:​​

    • WFI在存在待处理且启用的中断时唤醒,优先级由中断控制器决定,支持嵌套中断。

概述

RISC-V特权架构为硬件线程(hart)上的中断定义了0 - 15范围内若干主要标识,包括机器级和监管级外部中断(编号分别为11和9)、机器级和监管级定时器中断(编号分别为7和5)以及机器级和监管级软件中断(编号分别为3和1)。除了这些主要标识外,每个特权级别的外部中断还会由外部中断控制器(如高级平台级中断控制器(APLIC)或入站消息支持中断控制器(IMSIC))赋予次要、次级标识,以区分来自不同设备或原因的中断。

高级中断架构为hart内部或紧邻hart处产生的额外本地中断预留了另外24个主要中断标识,这些中断通常用于上报错误。该架构还定义了一种机制,允许软件有选择地将本地中断和自定义中断下放(delegate)到下一个较低的特权级别,在某些情况下,还能向较低特权级别注入完全虚拟的中断。

最后,有一项可选功能允许软件为主要中断(如定时器中断、软件中断以及任何本地中断)分配优先级,使其能够与平台级中断控制器(PLIC)、APLIC或IMSIC为外部中断设定的优先级混合使用。

5.1. Defined major interrupts and default priorities

表8列出了当前为符合此高级中断架构(AIA)的RISC-V硬件线程(hart)定义的所有主要中断。除RISC-V特权架构所规定的主要中断外,AIA还添加了中断编号35和43,分别作为低优先级和高优先级的RAS(可靠性、可用性和可服务性)事件的本地中断。

表8. 按默认优先级顺序排列的标准主要中断代码

默认优先级顺序

主要中断编号

描述

最高

43

本地中断:高优先级RAS事件

11, 3, 7

机器中断:外部、软件、定时器

9, 1, 5

监管级中断:外部、软件、定时器

12

监管级客户外部中断

10, 2, 6

VS中断:外部、软件、定时器

13

本地中断:计数器溢出

最低

35

本地中断:低优先级RAS事件

表9. 当前及未来主要中断的分类

主要中断编号

类别

0-12

非本地中断(由特权架构分配)

13-15

本地中断

16-23

本地中断(预留供未来标准本地中断使用)

24-31

自定义用途的本地中断

32-47

本地中断(预留供未来标准本地中断使用)

≥48

自定义用途的本地中断

在特权架构(编号0-15)控制的主要中断中,AIA将计数器溢出中断(代码13)归类为本地中断。此外,还假定未来对预留中断编号14和15的任何定义也将是本地中断。除两个RAS中断外,AIA还额外为其他RISC-V扩展可能定义的标准本地中断预留了16-23和32-47范围内的主要中断编号。分配给特权架构的其余主要中断(编号0-12)则归类为非本地中断。总体而言,表9总结了AIA对所有主要中断标识的分类。

RAS是可靠性、可用性和可服务性的缩写。通常,RAS事件对应于检测到损坏的数据(例如,由于软错误或硬错误导致)和/或此类数据的使用。例如,高优先级RAS事件本地中断可能表示发生了需要RAS错误处理程序采取行动以遏制错误并在可能的情况下恢复的紧急未纠正错误。低优先级RAS事件本地中断可能由非紧急的延迟或已纠正错误触发。

AIA本身并不要求检测到的RAS事件触发为此目的定义的两个本地中断之一。系统可以自由地通过其他方式报告任何或所有RAS事件,例如通过由APLIC或IMSIC路由的外部中断,或通过自定义中断。

特定RAS事件的报告方法很可能取决于在系统何处检测到该事件。AIA为RAS事件定义了本地中断编号,以便系统在hart本地检测到此类事件时,有一种标准方式来报告这些事件,而不完全依赖外部或自定义中断。

与往常一样,平台标准可能会进一步限制系统报告事件(无论是RAS事件还是其他事件)的方式。

对于RISC-V特权架构未定义的标准本地中断(编号16-23和32-47),目前的计划是按照表中所列顺序分配默认优先级:

默认优先级顺序

主要中断编号

描述

最高

47, 23, 46, 45, 22, 44, 43, 21, 42, 41, 20, 40

11, 3, 7

机器中断:外部、软件、定时器

9, 1, 5

监管级中断:外部、软件、定时器

12

监管级客户外部中断

10, 2, 6

VS中断:外部、软件、定时器

13

本地中断:计数器溢出

39, 19, 38, 37, 18, 36, 35, 17, 34, 33, 16, 32

最低

在16-23范围内的中断中,较高的中断编号表示较高的默认优先级,32-47范围内的中断亦如此。这两组中断在整个顺序中相互交错,特权架构的标准中断(0-15)则插入到序列中间。此建议的默认优先级顺序安排,使得中断0-31有可能成为32位RISC-V系统自身足够使用的子集。

实际上,未来的RISC-V扩展可能会也可能不会遵循为其定义的中断的默认优先级顺序的这一计划。

除表8中已有的主要中断外,还暂定提出了以下本地中断,按默认优先级从高到低排列:

  • 23:总线或系统错误
  • 45:每核心高功耗

相关文章:

RISC-V AIA SPEC学习(四)

第五章 Interrupts for Machine andSupervisor Levels 核心内容​​ 1.主要中断类型与默认优先级:​​ 定义了机器级别(M-level)和监管者级别(S-level)的标准中断类型(如MEI、SEI、MTI等)。默认优先级规则:本地中断(如软件/定时器)优先级高于外部中断,RAS事件(如低/高…...

Leetcode刷题报告2——双指针法

文章目录 前言[15. 三数之和](https://leetcode.cn/problems/3sum/)题干题解知识点总结 [42. 接雨水](https://leetcode.cn/problems/trapping-rain-water/)题干题解 前言 这部分总共是4道题,我就挑两道比较典型的题写一下博客吧。 双指针法的核心思路是通过合理的…...

线段树原理和代码详解

目录 线段树维护的信息类型 线段树的结构 线段树的初始化 线段树的功能: 单点修改,区间查询 区间修改,区间查询 以下内容均为个人见解,如有不足还请指出,作者会及时修改! 期待大家的点赞、收藏、评论&…...

xray-poc编写示例

禁止未授权扫描和测试行为!!! 1. SQL 时间盲注检测 (Time-Based Blind SQLi) name: generic/time-based-sqli rules:- method: GETpath: "/product?id1 AND (SELECT 1 FROM (SELECT SLEEP(5))a)--"expression: |response.status…...

[2-01-01].前端开发工具

前端学习大纲 一、VsCode: 1.1、下载地址 https://code.visualstudio.com/ 1.2.插件安装 为方便后续开发,建议安装如下插件 1.3.创建项目 先创建一个空的文件夹,如project_xxxx。然后打开vscode,再在vscode里面选择 File -> Open Fol…...

自动化实现web端Google SignUp——selenium

案例:自动化获取Google注册页面——selenium 前言 提示:通过案例掌握selenium语法 涉及技术:Python Selenium 在本文中,我们将通过一个实际案例来学习如何使用Selenium自动化工具模拟Google账号注册流程。这个案例涵盖了Selen…...

如何阅读GitHub上的深度学习项目

一、前期准备:构建知识基础 1. 必备工具与环境 开发工具: IDE:VS Code(推荐,轻量化插件丰富,如 Python、PyTorch 插件)、PyCharm(适合大型项目)。版本控制:…...

【LeetCode 热题 100】3.无重复字符的最长子串:详解滑动窗口解法

📌 原题链接:Longest Substring Without Repeating Characters 📖 一、题目描述 给定一个字符串 s,请你找出其中不含有重复字符的最长子串的长度。 示例: 输入: s "abcabcbb" 输出: 3 解释: 最长不重复子…...

Android12 Rom定制设置默认语言为中文

Android12 Rom定制设置默认语言为中文 1.前言: 最近在做客制化定制时需要默认语言为中文,而且可以切换输入法,之前讲解过在ROM中如何设置默认输入法,这里就不展开了,其实这个需求很简单,就是调试的时候发现…...

【设计模式】GoF设计模式之备忘录模式(Memento Pattern)

设计模式之备忘录模式 Memento Pattern V1.0核心概念角色代码示例程序运行结果代码讲解 适用场景 V1.0 核心概念 备忘录模式的核心是定义一个备忘录类(Memento),这个类的实例能够表示发起人类(Originator)的一种状态…...

springboot分层打包,减少重复构建和传输的开销

在 Spring Boot 中,分层打包(Layered Packaging) 是一种优化策略,特别针对 容器化部署(如 Docker) 的场景设计。它的核心思想是将应用的不同部分(依赖、资源、代码等)划分为独立的层…...

Linux——虚拟地址空间

1.虚拟地址空间 进程地址空间又叫虚拟地址空间 我们大家知道程序在运行时使用的空间被划分为多个不同的区域,每个区域都有不同的作用 正文代码:存放程序的可执行代码 通常都是只读的初始化数据:未初始化数据堆区:用于动态分配内存…...

GPU虚拟化实现(七)

GPU虚拟化实现(七) 章节回顾进程管理资源限制和环境变量利用率监控线程信号处理退出处理代码具体运作流程怎么限制SM的总结章节回顾 在上一章,分析了项目的主要代码模块功能:共享内存和初始化、GPU 内存管理、GPU 利用率管理以及锁机制,在这一章将继续分析其他的代码模块…...

【QNX+Android虚拟化方案】137 - msm-5.4 Kernel U盘 插入中断、枚举、匹配完整流程详解

【QNX+Android虚拟化方案】137 - msm-5.4 Kernel U盘 插入中断、枚举、匹配完整流程详解 1. HUB提交中断URB给HCD控制器,URB完成回调函数为 hub_irq()2. U盘插入后,触发运行 hub_irq() 中断回调函数2.1 高通 DWC3 Host HCD 初始化流程2.2 urb->complete(urb) 中断回调流程…...

分布式锁的几种实现

前几天看一个面试视频,提到了分布式锁一直想写写,但奈何考试太多,直到今天才有时间。好啦,开始今天的文章吧。 一.定义 分布式锁:当多个进程不在同一个系统中(比如分布式系统中控制共享资源访问),用分布式…...

Android 解绑服务问题:java.lang.IllegalArgumentException: Service not registered

问题与处理策略 问题描述 在 Android 项目中,解绑(unbindService())一个服务(Service)时,报如下错误 java.lang.IllegalArgumentException: Service not registered问题原因 错误表明在解绑服务时&…...

注册登录页面项目

关系型数据库地址:C:\Users\ASUS\AppData\Local\Temp\HuaweiDevEcoStudioDatabases\rdb #注册页面register.ets import dataRdb from ohos.data.rdbconst STORE_CONFIG {name: weather4.db } const TABLE_NAME weather_info const SQL_CREATE_TABLE CREATE TAB…...

从 Python 基础到 Django 实战 —— 数据类型驱动的 Web 开发之旅

主题简介: 本主题以 Python 基础数据类型为核心,结合 Django 框架的开发流程,系统讲解如何通过掌握数字、字符串、列表、元组、字典等基础类型,快速构建功能完善的 Web 应用。通过理论与实践结合,帮助学员从零基础 Py…...

数字智慧方案5971丨智慧农业大数据平台解决方案(59页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读:智慧农业大数据平台解决方案 在现代农业发展进程中,智慧农业大数据平台解决方案正成为推动农业变革的关键力量。这一方案从项目简介到大数据展示,各个环节紧密相连,致力于为农业发展…...

MOOS-ivp使用(一)——水下机器人系统的入门与使用

MOOS-ivp使用(一)——水下机器人系统的入门与使用 MOOS-ivp(Marine Operational Oceanographic System for Intelligent Vehicle Planning)是专为水下机器人(如AUV)设计的开源框架。类似于ROS,…...

【网络服务器】——回声服务器(echo)

作用 实现回声服务器的客户端/服务器程序,客户端通过网络连接到服务器,并发送任意一串英文信息,服务器端接收信息后,执行数据处理函数:将每个字符转换为大写并回送给客户端显示。 客户端:发送字符信息 服…...

IDEA在项目中添加模块出现Error adding module to project: null(向项目添加模块时出错: null)的解决方法

解决方法 (1)打开当前项目的结构...

(34)VTK C++开发示例 ---将图片映射到平面

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 演示如何将图片作为纹理贴图到一个平面上。 这段代码的功能是使用 VTK(Visualization Toolkit&#xff0…...

微软与Meta大幅增加人工智能基础设施投入

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

华为云服务器VoceChat在线聊天室部署

目录 1. 项目介绍2. 准备条件3. Docker环境部署3.1 安装Docker(CentOS 7)3.2 安装Docker Compose3.3 Docker常用命令 4. 创建配置文件4.1 创建工作目录4.2 创建docker-compose.yml文件4.3 保存配置文件 5. 部署运行5.1 启动服务5.2 检查服务状态5.3 防火…...

ERP系统(技术面)知识积累

本文为本人在准备某公司信息技术类岗位的面试时所作的笔记,该公司有技术面,此岗位入职后负责的是ERP系统的运行和维护,所以可能会问ERP系统相关的问题。故我写此文以做准备。 ERP简介 ERP,全称Enterprise Resource Planning&…...

Python学习笔记(第三部分)

接续 Python.md 文件的第三部分 类 类的创建的基本使用 创建一个类 class Dog(): 文档字符串:这是一次模拟小狗的简单尝试 def __init__(self,name,age):self.name nameself.age agedef sit(self):print(self.name.title() " is now sitting.")def ro…...

【浅尝Java】Java简介第一个Java程序(含JDK、JRE与JVM关系、javcdoc的使用)

🍞自我激励:每天努力一点点,技术变化看得见 文章目录 Java语言概述Java是什么Java语言的重要性Java语言发展简史Java语言特性 第一个Java程序main方法示例运行Java程序JDK、JRE、JVM之间的关系注释基本规则注释规范 标识符关键字 Java语言概述…...

【FreeRTOS-列表和列表项】

参照正点原子以及以下gitee笔记整理本博客,并将实验结果附在文末。 https://gitee.com/xrbin/FreeRTOS_learning/tree/master 一、列表和列表项的简介(熟悉) 1、什么是列表 答:列表是FreeRTOS中的一个数据结构,概念上和链表有点类似&#…...

22.2Linux的I2C驱动实验(编程)_csdn

我尽量讲的更详细,为了关注我的粉丝!!! 这里我们用到的是stm32mp157的板子,所以我们看一下I2C用到的引脚。 1、硬件原理图分析 可以看到在这块板子上面用的SDA和SCL总线是PA11,PA12。所以要修改设备树和镜像文件&…...

socket-IO复用技术

五个I/O模型 1、阻塞I/O 2、非阻塞I/O 3、I/O复用(select和poll) 4、信号驱动I/O 5、异步I/O I/O复用 是一种在单线程或单进程环境下,同时监听多个 I/O 事件的技术。它允许程序高效地处理多个输入输出流(如网络套接字、文件描…...

上位机知识篇---二进制操作

文章目录 前言接收数据示例:0xAA 0x12 0x34 0x55合并高/低字节数据RGB565颜色值:0xF800(红色)Python中负数右移接收帧:01 03 02 12 34 CRC前言 本文简单对单片机、上位机中的映射(Mapping)和位移操作符(Bit Shifting)等相关知识进行了简单介绍. 一、单片机与上位机中…...

openEuler 22.03 安装 Mysql 5.7,TAR离线安装

目录 一、检查系统是否安装其他版本Mariadb数据库二、环境检查2.1 必要环境检查2.2 在线安装(有网络)2.3 离线安装(无网络) 二、下载Mysql2.1 在线下载2.2 离线下载 三、安装Mysql四、配置Mysql五、开放防火墙端口六、数据备份七、…...

《排序算法总结》

引言: 编程学到现在,我们已经接触了很多种排序算法,这篇文章我就对常见的几种排序算法进行一个小结。 一: 排序算法分类: 二: 插入排序: 直接插入排序: 1. 概念: 直…...

【Java学习笔记】递归

递归(recursion) 思想:把一个复杂的问题拆分成一个简单问题和子问题,子问题又是更小规模的复杂问题,循环往复 本质:栈的使用 递归的注意事项 (1)需要有递归出口,否者就…...

体系学习1:C语言与指针1——预定义、进制打印、传参为数组

1、不对一段代码进行编译 #if 0 statement #endif2、输出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*类型的数据3、不同进制的打印 int data 1200; char hed[9];//为\0预留位置!!! sprintf(hed,"%08X&…...

使用Java正则表达式进行分组与匹配文本提取

在Java开发中,正则表达式(Regex)是处理字符串的强大工具,广泛应用于数据验证、文本解析和格式转换等场景。通过正则表达式的分组功能,开发者可以精确地提取匹配模式的子部分,而不仅仅是整个匹配内容。Java的…...

RAGFlow上传3M是excel表格到知识库,提示上传的文件总大小过大

环境: Ragflowv0.17.2 问题描述: RAGFlow上传3M是excel表格到知识库,提示上传的文件总大小过大 解决方案: 定位问题: 1.查询Nginx 日志 Nginx 日志 检查 Nginx 配置中日志路径是否正确,确保日志文件有…...

2025年4月文章一览

2025年4月编程人总共更新了30篇文章: 1.2025年3月文章一览 2.《Operating System Concepts》阅读笔记:p528-p544 3.《Operating System Concepts》阅读笔记:p545-p551 4.《Operating System Concepts》阅读笔记:p552-p579 5.…...

2025大模型微调视频课程全套(附下载)

2025大模型微调视频课程全套,共10课。主要内容如下: 1、大模型的发展 2、Transformer & LLMs 3、大模型微调预览&Lora微调&Alpaca模型微调 4、Alpaca&AdaLoRA&QLoRA模型微调 5、Efficient Fine-tuning&Efficient Inference&…...

【Python Web开发】04-Cookie和Session

文章目录 1. Cookie1.1 定义1.2 工作原理1.3 用途1.4 优缺点 2. Session2.1 定义2.2 工作原理2.3 用途2.4 优缺点 3. Cookie 与 Session 的关系4. 安全性考量5. Python 中使用 Cookie 和 Session 在 HTTP 协议里,Cookie 和 Session 是用于管理客户端与服务器之间会话…...

从股指到期指,哪些因素影响基差?

当我们谈论股指期货(简称“期指”)与股票现货指数(简称“股指”)的基差时,其实是在探讨期货价格与现货价格之间的“差价”。这个差价受多种因素影响,时而扩大,时而缩小,甚至可能“翻…...

n8n 中文系列教程_15. 【工具篇】n8n中文版与汉化指南:从原理到实践

n8n 作为一款强大的开源自动化工具,目前尚未推出官方中文版,但社区提供了汉化方案。不过,对于技术用户,我们更推荐使用英文原版,以便更好地查阅文档和解决问题。如果你仍希望尝试汉化,本文将详细介绍如何通…...

3D版同步帧游戏

以下是实现一个3D版同步帧游戏的详细步骤与完整代码示例。我们将以第一人称射击游戏(FPS)为原型,重点讲解3D空间中的同步机制优化。 项目升级:3D版核心改动 1. 3D坐标系与消息结构 // common/messages.go type Vector3 struct {X float32 `json:"x"`Y float32 `…...

C语言中数字转化为字符串的方法

C语言中数字转化为字符串的方法 1. 使用 sprintf 函数 这是 stdio.h 头文件中的标准库函数 ,功能类似于 printf ,但不是输出到控制台,而是将格式化后的内容输出到字符数组(字符串)中。 示例代码: c #inc…...

使用MGeo模型高精度实现文本中地址识别

一、功能与安装 1、模型地址 模型是阿里开发的门址高精度识别模型。 https://modelscope.cn/models/iic/mgeo_geographic_elements_tagging_chinese_base/summary 注意:不能自己安装包,没法解决依赖问题,直接按照官方要求安装下面的包&am…...

OpenGL-ES 学习(15) ----纹理

目录 纹理简介纹理映射纹理映射流程示例代码:纹理的环绕和过滤方式纹理的过滤方式 纹理简介 现实生活中,纹理(Texture) 类似于游戏中皮肤的概念,最通常的作用是装饰 3D 物体,它像贴纸一样贴在物体的表面,丰富物体的表…...

类成员函数编译链接的过程

1.静态成员函数和普通成员函数 源文件编译成目标文件,静态成员函数和普通成员函数在目标文件代码段,函数添加进了符号表,地址是在代码段的相对地址,这个地址只是一个临时地址因为后面链接时还要合并代码段,函数地址还…...

PostgreSQL:pgAdmin 4 使用教程

pgAdmin 4 是一个用于管理和维护 PostgreSQL 数据库的强大工具。它提供了一个图形化界面,使用户能够轻松地连接到数据库、创建表、运行 SQL 语句以及执行其他数据库管理任务。 安装和使用 安装 pgAdmin 4 安装 pgAdmin 4 非常简单。下载并运行安装程序&#xff0…...

*(解引用运算符)与 ++(自增运算符)的优先级

在 C 和 C 等编程语言里,*(解引用运算符)与 (自增运算符)的执行优先级高低,要依据 是前缀形式还是后缀形式来确定。下面为你详细分析: 1. 后缀 运算符 后缀 运算符的优先级比 *&#xff08…...