【学一点RISC-V】ACLINT(高级核心本地中断控制器)文档
RISCV架构 ACLINT文档
ACLINT原文档:https://github.com/riscv/riscv-aclint/blob/main/riscv-aclint.adoc
在这里进行了翻译以及校对,仅供参考,不正确的地方欢迎指出
1、介绍
【此 RISC-V ACLINT 规范定义了一组内存映射设备,这些设备为多 HART RISC-V 平台上的每个 HART 提供处理器间中断 (IPI) 和定时器功能】。 在多 HART RISC-V 平台上运行的操作系统、引导加载程序和固件需要这些 HART 级 IPI 和定时器功能。
SiFive 核心本地中断器 (CLINT) 器件已在 RISC-V 领域广泛采用,以提供机器级 IPI 和定时器功能。 不幸的是,【SiFive CLINT 具有针对 IPI 和定时器功能的统一寄存器映射,并且不提供 supervisor-level IPI 功能】。
【RISC-V ACLINT 规范采用更加模块化的方法,为 IPI 和定时器功能定义单独的内存映射设备】。 当平台具有替代机制时,这种模块化允许 RISC-V 平台省略一些 RISC-V ACLINT 设备。 除了模块化之外,【RISC-V ACLINT 规范还为 Supervisor 级 IPI 定义了专用内存映射设备】。 下面的表 1 显示了 RISC-V ACLINT 规范定义的器件列表。
Table 1. ACLINT 设备
名称 | 特权级 | 功能 |
---|---|---|
MTIMER | Machine | 固定频率计数器和定时器事件 |
MSWI | Machine | 处理器间(或软件)中断 |
SSWI | Supervisor | 处理器间(或软件)中断 |
RISC-V ACLINT 规范被定义为向后兼容 SiFive CLINT 规范。 MTIMER 和 MSWI 器件的寄存器定义和寄存器偏移量与 SiFive CLINT 规范定义的定时器和 IPI 寄存器兼容。 RISC-V 平台上的 SiFive CLINT 设备在逻辑上可以看作是在内存地址空间中彼此相邻放置的一个 MSWI 设备和一个 MTIMER 设备,如下表 2 所示。
1.1、与 SiFive CLINT 向后兼容
RISC-V ACLINT 规范与 SiFive CLINT 规范向后兼容。**【MTIMER 和 MSWI 器件的寄存器定义和寄存器偏移量与 SiFive CLINT 规范定义的定时器和 IPI 寄存器兼容】。**在 RISC-V 平台上,一个 SiFive CLINT 器件在逻辑上可视为一个 MSWI 器件和一个 MTIMER 器件,它们在内存地址空间中相邻放置,如下表 2 所示。
Table 2. 一个 SiFive CLINT 设备相当于两个 ACLINT 设备
SiFive CLINT 偏移范围 | ACLINT 设备 | 功能 |
---|---|---|
0x0000_0000 - 0x0000_3fff | MSWI | 机器级处理器间(或软件)中断 |
0x0000_4000 - 0x0000_bfff | MTIMER | 机器级固定频率计数器和定时器事件 |
2、机器级定时器设备(MTIMER)
【MTIMER 器件为 RISC-V 平台上的一组 HART 提供机器级定时器功能。它有一个固定频率单调时间计数器 (MTIME) 寄存器,并且对于连接到 MTIMER 设备的每个 HART 都有一个时间比较寄存器 (MTIMECMP)。 未连接到任何 HART 的 MTIMER 设备应仅具有 MTIME 寄存器,而没有 MTIMECMP 寄存器】。
在具有多个 MTIMER 设备的 RISC-V 平台上:
- 每个 MTIMER 设备为不同(或不相交)的 HART 集提供机器级定时器功能。 MTIMER 设备为与其关联的每个 HART 分配一个从零开始的 HART 索引。 MTIMER 设备分配给 HART 的 HART 索引可能与 RISC-V 特权架构分配给 HART 的唯一 HART 标识符(hart ID)有任何关系,也可能没有关系
- 两个或多个 MTIMER 设备可以共享相同的物理 MTIME 寄存器,同时拥有自己单独的 MTIMECMP 寄存器
- MTIMER 设备的 MTIMECMP 寄存器必须仅与同一 MTIMER 设备的 MTIME 寄存器进行比较,以生成机器级定时器中断
单个 MTIMER 设备支持的最大 HART 数量为 4095,相当于 MTIMECMP 寄存器的最大数量。
2.1、寄存器映射
一个 MTIMER 设备有两个独立的基地址:一个用于 MTIME 寄存器,另一个用于 MTIMECMP 寄存器。 单个 MTIMER 设备的单独的基地址允许多个 MTIMER 设备共享相同的物理 MTIME 寄存器。
下面的表 3 显示了 MTIME 寄存器的映射,而下面的表 4 显示了 MTIMECMP 寄存器相对于单独基地址的映射。
Table 3. ACLINT MTIMER Time 寄存器映射
Offset | Width | Attr | Name | Description |
---|---|---|---|---|
0x0000_0000 | 8B | RW | MTIME | Machine-level time counter |
Table 4. ACLINT MTIMER Compare 寄存器映射
Offset | Width | Attr | Name | Description |
---|---|---|---|---|
0x0000_0000 | 8B | RW | MTIMECMP0 | HART index 0 machine-level time compare |
0x0000_0008 | 8B | RW | MTIMECMP1 | HART index 1 machine-level time compare |
… | … | … | … | … |
0x0000_7FF0 | 8B | RW | MTIMECMP4094 | HART index 4094 machine-level time compare |
2.2、MTIME 寄存器 (Offset: 0x00000000)
MTIME 寄存器是一个 64 位读写寄存器,包含基于固定参考频率计数的周期数。
MTIMER 器件复位时,MTIME 寄存器被清零。
2.3、MTIMECMP 寄存器 (Offsets: 0x00000000 - 0x00007FF0)
MTIMECMP 寄存器是每个 HART 一个的 64 位读写寄存器。它包含相应的 HART 触发机器级定时器中断的 MTIME 寄存器的值。
**每当 MTIME 大于或等于相应 MTIMECMP 寄存器中的值时,HART 的机器级定时器中断就会挂起,而每当 MTIME 小于相应 MTIMECMP 寄存器中的值时,HART 的机器级定时器中断就会被清除。**机器级定时器中断反映在 mip
CSR 的 MTIP 位中。
在 MTIMER 器件复位时,MTIMECMP 寄存器处于未知状态。
2.4、同步多个 MTIME 寄存器
RISC-V 平台可以将多个 HART 分组为分层拓扑组(例如 clusters、nodes 或 sockets),其中每个拓扑组都有自己的 MTIMER 设备。 此外,此类 RISC-V 平台还允许在运行时对拓扑组(包括 MTIMER 设备)进行时钟门控或断电。
2.4 节省略了部分内容,这一部分可以查阅资料
暂时未涉及到多个 MTIMER 设备的情况
3、机器级软件中断设备(MSWI)
【MSWI 设备为 RISC-V 平台上的一组 HART 提供机器级 IPI 功能。 它为连接到 MSWI 设备的每个 HART 提供一个 IPI 寄存器 (MSIP)】。
在具有多个 MSWI 设备的 RISC-V 平台上,每个 MSWI 设备为不同(或不相交)的 HART 集提供机器级 IPI 功能。 MSWI 设备为与其关联的每个 HART 分配一个从零开始的 HART 索引。 MSWI 设备分配给 HART 的 HART 索引可能与 RISC-V 特权架构分配给 HART 的唯一 HART 标识符 (hart ID) 有任何关系,也可能没有关系。
单个 MSWI 设备支持的 HART 最大数量为 4095,相当于 MSIP 寄存器的最大数量。
3.1、寄存器映射
Table 5. ACLINT MSWI 设备寄存器映射
Offset | Width | Attr | Name | Description |
---|---|---|---|---|
0x0000_0000 | 4B | RW | MSIP0 | HART index 0 machine-level IPI register |
0x0000_0004 | 4B | RW | MSIP1 | HART index 1 machine-level IPI register |
… | … | … | … | … |
0x0000_3FFC | 4B | RESERVED | Reserved for future use. |
3.2、MSIP Registers (Offsets: 0x00000000 - 0x00003FF8)
每个 MSIP 寄存器都是一个 32 位宽的 WARL 寄存器,其中高 31 位连接为零。 最低有效位反映在 mip
CSR 的 MSIP 中。【通过向相应的 MSIP 寄存器写入 1 或 0 可以挂起或清除 HART 的机器级软件中断】。
在 MSWI 设备复位时,每个 MSIP 寄存器都被清零。
4、Supervisor-level Software Interrupt Device (SSWI)
【SSWI 设备为 RISC-V 平台上的一组 HART 提供 Supervisor 级 IPI 功能。它提供一个寄存器来为连接到 SSWI 设备的每个 HART 设置 IPI (SETSSIP)】。
在具有多个 SSWI 设备的 RISC-V 平台上,每个 SSWI 设备为不同(或不相交)的 HART 集提供 Supervisor 级 IPI 功能。 SSWI 设备为与其关联的每个 HART 分配一个从零开始的 HART 索引。 SSWI 设备分配给 HART 的 HART 索引可能与 RISC-V 特权架构分配给 HART 的唯一 HART 标识符 (hart ID) 有任何关系,也可能没有关系。
单个 SSWI 设备支持的最大 HART 数量为 4095,相当于 SETSSIP 寄存器的最大数量。
4.1、Register Map
Table 6. ACLINT SSWI Device 寄存器映射
Offset | Width | Attr | Name | Description |
---|---|---|---|---|
0x0000_0000 | 4B | RW | SETSSIP0 | HART index 0 set supervisor-level IPI register |
0x0000_0004 | 4B | RW | SETSSIP1 | HART index 1 set supervisor-level IPI register |
… | … | … | … | … |
0x0000_3FFC | 4B | RESERVED | Reserved for future use. |
4.2、SETSSIP Registers (Offsets: 0x00000000 - 0x00003FF8)
每个 SETSSIP 寄存器都是一个 32 位宽的 WARL 寄存器,其中高 31 位连接为零。 SETSSIP 寄存器的最低有效位始终读取 0。**将 0 写入 SETSSIP 寄存器的最低有效位没有任何效果,而将 1 写入最低有效位会向相应的 HART 发送边沿敏感中断信号,导致 HART 置位 mip
CSR 中的 SSIP。**对 SETSSIP 寄存器的写入保证反映在相应 HART 的 SSIP 中,但不一定立即反映。
注意:RISC-V 特权架构将 mip
和 sip
CSR 中的 SSIP 定义为可写位,因此 M 模式或 S 模式软件可以直接清除 SSIP。
相关文章:
【学一点RISC-V】ACLINT(高级核心本地中断控制器)文档
RISCV架构 ACLINT文档 ACLINT原文档:https://github.com/riscv/riscv-aclint/blob/main/riscv-aclint.adoc 在这里进行了翻译以及校对,仅供参考,不正确的地方欢迎指出 1、介绍 【此 RISC-V ACLINT 规范定义了一组内存映射设备,这…...

grafana table合并查询
注:本文基于Grafana v9.2.8编写 1 问题 默认情况下table展示的是一个查询返回的多个field,但是我想要的数据在不同的metric上,比如我需要显示某个pod的读写IO,但是读和写这两个指标存在于两个不同的metirc,需要分别查…...
编程笔记 html5cssjs 007 文章排版 颜真卿《述张长史笔法十二意》
编程笔记 html5&css&js 007 文章排版 颜真卿《述张长史笔法十二意》 一、代码二、解释 这段代码定义了一个古文展示页面的结构和样式,同时本文内容也是书法爱好者的珍贵资料。 一、代码 <!DOCTYPE html> <html lang"zh-CN"> <hea…...

Yolov8模型用torch_pruning剪枝
目录 🚀🚀🚀订阅专栏,更新及时查看不迷路🚀🚀🚀 原理 遍历所有分组 高级剪枝器 🚀🚀🚀订阅专栏,更新及时查看不迷路🚀🚀…...

C++字符串操作【超详细】
零.前言 本文将重点围绕C的字符串来展开描述。 其中,对于C/C中字符串的一些区别也做出了回答,并对于C的(string库)进行了讲解,最后我们给出字符串的不同表达形式。 开发环境: VS2022 一.字符串常量跟字…...

Ps:画笔工具
画笔工具 Brush Tool是 Photoshop 中最常用的工具,可广泛地用于绘画与修饰工作之中。 快捷键:B ◆ ◆ ◆ 常用操作方法与技巧 1、熟练掌握画笔工具的操作对于使用其他工具也非常有益,因为 Photoshop 中许多与笔刷相关的工具有类似的选项和操…...

【鸿蒙 HarmonyOS 4.0】弹性布局(Flex)
一、介绍 弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸…...

Java 客户端向服务端上传文件(TCP通信)
一、实验内容 编写一个客户端向服务端上传文件的程序,要求使用TCP通信的的知识,完成将本地机器输入的路径下的文件上传到D盘中名称为upload的文件夹中。并把客户端的IP地址加上count标识作为上传后文件的文件名,即IP(count&#…...

问题:前端获取long型数值精度丢失,后面几位都为0
文章目录 问题分析解决 问题 通过接口获取到的数据和 Postman 获取到的数据不一样,仔细看 data 的第17位之后 分析 该字段类型是long类型问题:前端接收到数据后,发现精度丢失,当返回的结果超过17位的时候,后面的全…...

Day26:安全开发-PHP应用模版引用Smarty渲染MVC模型数据联动RCE安全
目录 新闻列表 自写模版引用 Smarty模版引用 代码RCE安全测试 思维导图 PHP知识点: 功能:新闻列表,会员中心,资源下载,留言版,后台模块,模版引用,框架开发等 技术:输…...

LVS集群(Linux Virtual server)介绍----及LVS的NAT模式部署(一)
群集的含义 ●Cluster,集群、群集由多台主机构成,但对外只表现为一个整体,只提供访问入口(域名或IP地址),相当于一台大型计算机 问题: 互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠…...

海外媒体宣发套餐如何利用3种方式洞察市场-华媒舍
在当今数字化时代,媒体宣发成为了企业推广产品和品牌的重要手段之一。其中,7FT媒体宣发套餐是一种常用而有效的宣传方式。本文将介绍这种媒体宣发套餐,以及如何利用它来洞察市场。 一、关键概念 在深入讨论7FT媒体宣发套餐之前,让…...

开发知识点-Apache Struts2框架
Apache Struts2 介绍S2-001S2CVE-2023-22530 介绍 Apache Struts2是一个基于MVC(模型-视图-控制器)设计模式的Web应用程序框架,它是Apache旗下的一个开源项目,并且是Struts1的下一代产品。Struts2是在Struts1和WebWork的技术基础…...
【Spring高级】第3讲 Bean的生命周期
目录 基本的生命周期后处理器总结 基本的生命周期 为了演示生命周期的过程,我们直接使用 SpringApplication.run()方法,他会直接诶返回一个容器对象。 import org.springframework.boot.SpringApplication; import org.springframework.context.Config…...

【C语言】linux内核tcp_write_xmit和tcp_write_queue_purge
tcp_write_xmit 一、讲解 这个函数 tcp_write_xmit 是Linux内核TCP协议栈中的一部分,其基本作用是发送数据包到网络。这个函数会根据不同情况推进发送队列的头部,确保只要远程窗口有空间,就可以发送数据。 下面是对该函数的一些主要逻辑的中…...
opencv实现视频人脸识别
一. 实现指定图像的人脸识别 注意: 以下实例参考《OpenCV轻松入门面向Python》李立宗著,使用python语言,编辑器为PyCharm,且都运行成功。 1.dface3.jpg图片文件和当前代码放在同一级目录下。 2.级联分类器文件和当前代码文件放在…...
【今日面经】24/3/9 广州Java某小厂电话面经
面经来源:https://www.nowcoder.com/?type818_1 目录 1、 和equals()有什么区别?2、String变量直接赋值和构造函数赋值比较相等吗?3、String一些方法?4、抽象类和接口有什么区别?5、Java容器有哪些?6、Lis…...

日期问题---算法精讲
前言 今天讲讲日期问题,所谓日期问题,在蓝桥杯中出现众多,但是解法比较固定。 一般有判断日期合法性,判断是否闰年,判断日期的特殊形式(回文或abababab型等) 目录 例题 题2 题三 总结 …...

倒计时35天
dp预备(来源:b站acm刘春英老师) 1. 2. 3. 4. 5. 6. 7....
JAVA后端开发面试基础知识(七)——多线程
1. 线程池原理 优点 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...