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

【学一点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 设备

名称特权级功能
MTIMERMachine固定频率计数器和定时器事件
MSWIMachine处理器间(或软件)中断
SSWISupervisor处理器间(或软件)中断

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_3fffMSWI机器级处理器间(或软件)中断
0x0000_4000 - 0x0000_bfffMTIMER机器级固定频率计数器和定时器事件

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 寄存器映射

OffsetWidthAttrNameDescription
0x0000_00008BRWMTIMEMachine-level time counter

Table 4. ACLINT MTIMER Compare 寄存器映射

OffsetWidthAttrNameDescription
0x0000_00008BRWMTIMECMP0HART index 0 machine-level time compare
0x0000_00088BRWMTIMECMP1HART index 1 machine-level time compare
0x0000_7FF08BRWMTIMECMP4094HART 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 设备寄存器映射

OffsetWidthAttrNameDescription
0x0000_00004BRWMSIP0HART index 0 machine-level IPI register
0x0000_00044BRWMSIP1HART index 1 machine-level IPI register
0x0000_3FFC4BRESERVEDReserved 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 寄存器映射

OffsetWidthAttrNameDescription
0x0000_00004BRWSETSSIP0HART index 0 set supervisor-level IPI register
0x0000_00044BRWSETSSIP1HART index 1 set supervisor-level IPI register
0x0000_3FFC4BRESERVEDReserved 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 特权架构将 mipsip 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 文章排版 颜真卿《述张长史笔法十二意》 一、代码二、解释 这段代码定义了一个古文展示页面的结构和样式&#xff0c;同时本文内容也是书法爱好者的珍贵资料。 一、代码 <!DOCTYPE html> <html lang"zh-CN"> <hea…...

Yolov8模型用torch_pruning剪枝

目录 &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; 原理 遍历所有分组 高级剪枝器 &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680…...

C++字符串操作【超详细】

零.前言 本文将重点围绕C的字符串来展开描述。 其中&#xff0c;对于C/C中字符串的一些区别也做出了回答&#xff0c;并对于C的&#xff08;string库&#xff09;进行了讲解&#xff0c;最后我们给出字符串的不同表达形式。 开发环境&#xff1a; VS2022 一.字符串常量跟字…...

Ps:画笔工具

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

【鸿蒙 HarmonyOS 4.0】弹性布局(Flex)

一、介绍 弹性布局&#xff08;Flex&#xff09;提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴&#xff0c;子元素默认沿主轴排列&#xff0c;子元素在主轴方向的尺寸称为主轴尺寸&#xff0c;在交叉轴方向的尺寸称为交叉轴尺寸…...

Java 客户端向服务端上传文件(TCP通信)

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

问题:前端获取long型数值精度丢失,后面几位都为0

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

Day26:安全开发-PHP应用模版引用Smarty渲染MVC模型数据联动RCE安全

目录 新闻列表 自写模版引用 Smarty模版引用 代码RCE安全测试 思维导图 PHP知识点&#xff1a; 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框架开发等 技术&#xff1a;输…...

LVS集群(Linux Virtual server)介绍----及LVS的NAT模式部署(一)

群集的含义 ●Cluster&#xff0c;集群、群集由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供访问入口(域名或IP地址)&#xff0c;相当于一台大型计算机 问题&#xff1a; 互联网应用中&#xff0c;随着站点对硬件性能、响应速度、服务稳定性、数据可靠…...

海外媒体宣发套餐如何利用3种方式洞察市场-华媒舍

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

开发知识点-Apache Struts2框架

Apache Struts2 介绍S2-001S2CVE-2023-22530 介绍 Apache Struts2是一个基于MVC&#xff08;模型-视图-控制器&#xff09;设计模式的Web应用程序框架&#xff0c;它是Apache旗下的一个开源项目&#xff0c;并且是Struts1的下一代产品。Struts2是在Struts1和WebWork的技术基础…...

【Spring高级】第3讲 Bean的生命周期

目录 基本的生命周期后处理器总结 基本的生命周期 为了演示生命周期的过程&#xff0c;我们直接使用 SpringApplication.run()方法&#xff0c;他会直接诶返回一个容器对象。 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协议栈中的一部分&#xff0c;其基本作用是发送数据包到网络。这个函数会根据不同情况推进发送队列的头部&#xff0c;确保只要远程窗口有空间&#xff0c;就可以发送数据。 下面是对该函数的一些主要逻辑的中…...

opencv实现视频人脸识别

一. 实现指定图像的人脸识别 注意&#xff1a; 以下实例参考《OpenCV轻松入门面向Python》李立宗著&#xff0c;使用python语言&#xff0c;编辑器为PyCharm&#xff0c;且都运行成功。 1.dface3.jpg图片文件和当前代码放在同一级目录下。 2.级联分类器文件和当前代码文件放在…...

【今日面经】24/3/9 广州Java某小厂电话面经

面经来源&#xff1a;https://www.nowcoder.com/?type818_1 目录 1、 和equals()有什么区别&#xff1f;2、String变量直接赋值和构造函数赋值比较相等吗&#xff1f;3、String一些方法&#xff1f;4、抽象类和接口有什么区别&#xff1f;5、Java容器有哪些&#xff1f;6、Lis…...

日期问题---算法精讲

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

倒计时35天

dp预备(来源&#xff1a;b站acm刘春英老师) 1. 2. 3. 4. 5. 6. 7....

JAVA后端开发面试基础知识(七)——多线程

1. 线程池原理 优点 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...