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

RISC-V(2)——特权级及特权指令集

目录

1.  特权级

2. 控制和状态寄存器(CSR)

2.1 分类

 2.2 分析    


 

1.  特权级

        一个 RISC-V 硬件线程(hart)是运行在某个特权级上的,这个特权级被编码到一个或者多个 CSR(control and status register,控制和状态寄存器)中的一种模式。

        当前定义了四种特权级,如下所示。 

级别编码名字缩写
000用户模式U
101管理员/监管者模式S
210保留H
311机器模式M
  •         特权级的作用:被用于在不同的软件栈部件之间提供保护;
  •         现象:试图执行当前特权模式不允许的操作, 将导致一个异常的产生。这些异常通常会导致下层执行环境或者 HAL 产生自陷(trap)。

        机器级是最高级特权,也是 RISC-V 硬件平台唯一必须的特权级。

  • 机器模式(M-mode):代码是固有可信的(inherently trusted),因为它可以在低层次访问机器的实现;
  • 用户模式(U-mode):被用于传统应用程序;
  • 管理员模式(S-mode):被分别用于操作系统;

        所有硬件实现必须提供M-mode,因为这是唯一的模式,可以不受限制地访问整个机器。 最简单的RISC-V实现可以仅提供M-mode,虽然这样做不能为防止不正确的、恶意应用代码提供保护。许多RISC-V实现还支持至少一个用户模式(U-mode),以对系统的其他部分进行保护,防止被应用程序代码破坏。管理员模式(S-mode)可被加入,以在管理员级操作系统和SEE、HAL之间提供隔离。

        一个 hart(硬件线程)通常在 U-mode 下运行应用程序,直到某些自陷(例如一个管理 员调用或者一个定时器中断)强制切换到一个自陷处理函数(trap handler),这个自陷处理 函数通常运行在更特权的模式下。然后这个线程将执行这个自陷处理器函数,它最终在 U-mode 下,在引起自陷的指令处或之后,继续线程执行。提升特权基级别的自陷称为垂直 自陷(vertical trap),而保持在同样特权级别的自陷称为水平自陷(horizontal trap)。RISC-V 特权体系结构提供了将自陷灵活地路由到不同的特权层。

2. 控制和状态寄存器(CSR)

2.1 分类

用户级:

管理员级:

 机器级:

 

 2.2 分析    

        高权限模式通常可以使用权限较低的模式的所用功能,并且它们还有一些低权限模式下不可用的额外功能,例如:

  • 处理中断和执行 I/O 的功能
  • 处理器通常大部分时间都运行在权限最低的模式下
  • 处理中断和异常时会将控制权移交到更高权限的模式

RISC-V 特权体系结构定义的所有指令的指令集:

(1)mret、sret、uret

mret、sret或uret指令用于从m模式中的自陷重定向。

(2)sfence.vma

        supervisor-mode fence.virtual memory addreee,刷新当前CPU下的TLB,在多核系统中,如果一个hart修改了页表,执行sfence.vma之后,仅仅是刷新了当前hart的TLB,无法刷新其他hart的TLB。

(3) wfi

等待中断指令。

等待中断指令(WFI)用于提供提示,即当前的hart可以暂停,直到有需要处理的中断。WFI指令的执行也可以用于通知硬件平台适当的中断应该优先路由到该hart。WFI可在所有特权模式下使用,也可选择在U模式下使用。
当在mstatus中TW=1时,此指令可能引发非法指令异常。

         如果当硬件线程被暂停时,出现一个使能的中断或者后来出现了一个,将会在下一条指 令处执行中断异常,即自陷处理函数继续执行,并且 mepc=pc+4。

(4)寄存器操纵

  • csrr,读取一个 CSR 的值到通用寄存器。如:csrr t0, mstatus,读取 mstatus 的值到 t0 中。
  • csrw,把一个通用寄存器中的值写入 CSR 中。如:csrw mstatus, t0,将 t0 的值写入 mstatus
  • csrs,把 CSR 中指定的 bit 置 1。如:csrsi mstatus, (1 << 2),将 mstatus 的右起第 3 位置 1。
  • csrc,把 CSR 中指定的 bit 置 0。如:csrci mstatus, (1 << 2),将 mstatus 的右起第 3 位置 0。
  • csrrw,读取一个 CSR 的值到通用寄存器,然后把另一个值写入该 CSR。如:csrrw t0, mstatus, t0,将 mstatus 的值与 t0 的值交换。
  • csrrs,读取一个 CSR 的值到通用寄存器,然后把该 CSR 中指定的 bit 置 1。
  • csrrc,读取一个 CSR 的值到通用寄存器,然后把该 CSR 中指定的 bit 置 0。

 

 

相关文章:

RISC-V(2)——特权级及特权指令集

目录 1. 特权级 2. 控制和状态寄存器&#xff08;CSR&#xff09; 2.1 分类 2.2 分析 1. 特权级 一个 RISC-V 硬件线程&#xff08;hart&#xff09;是运行在某个特权级上的&#xff0c;这个特权级被编码到一个或者多个 CSR&#xff08;control and status register&a…...

Linux——常用命令大汇总(带你快速入门Linux)

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.终端和shell命令解析器终端和shell命令解析器概述终端提示符的格式常用快捷键 二.Linux命令格式帮助文档&#xff1a;man 三.目录基础知识Wind…...

记录 使用 git 克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )

解决方法&#xff1a; 1. 新建空文件夹->右键->点击 Git Bash Here2. 输入 cd C&#xff1a;3. 输入 cat ~/.ssh/id_rsa.pub4. 输入 ssh-keygen重复回车&#xff0c;生成一个矩形&#xff0c;则说明公钥已经生成了。重复步骤3&#xff0c;生成publickey&#xff0c;右键…...

kafka---- zookeeper集群搭建

1.准备工作: ##准备3个节点&#xff0c;要求配置好主机名称&#xff0c;服务器之间系统时间保持一致 ##注意/etc/hostname 和/etc/hosts 配置主机名称(在这个里我准备Prac-zk-133, Prac-zk-134 , Prac-zk-135二节点) vim /etc/hosts #保证可以通过主机名互通 添加格式为IP 主…...

linux安装firefox

1.下载对应包 https://www.mozilla.org/en-US/firefox/all/#product-desktop-release 2. 挂载桌面链接(如果/usr/bin/firefox下有的话,先删除) ln -s /opt/firefox/firefox /usr/bin/firefox 3.执行以下命令&#xff0c;即可启动Firefox客户端&#xff1a; firefox...

【MySQL】基础语法总结

MySQL 基础语句 一、DDL 数据库定义语言 1.1CREATE 创建 1.1.1 创建数据库 语法结构 CREATE DATABASE database_name;示例 CREATE DATABASE demo;1.1.2 创建表 语法结构 CREATE TABLE 表名 (列1 数据类型,列2 数据类型,... );示例 CREATE TABLE new_user (id INT PRIMARY KE…...

【玩玩Vue】使用el-menu作为菜单时,通过一二级路由控制菜单高亮

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、Vue路由二、路由一级控制高亮&#xff08;常用&#xff09;1.vue中路由文件2.网址样式3.Vue文件4.$route的内容 三、路由二级控制高亮…...

9.2 【C语言】使用结构体数组

一个结构体变量中可以存放一组有关联的数据&#xff08;如一个学生的学号、姓名、成绩等数据&#xff09;&#xff0c;如果有10个学生需要参加运算&#xff0c;显然应该用数组&#xff0c;这就是结构体数组。 9.2.1 定义结构体数组 例9.3 有三个候选人&#xff0c;每个选民只…...

leetcode原题: 最小值、最大数字

题目1&#xff1a;最小值 给定两个整数数组a和b&#xff0c;计算具有最小差绝对值的一对数值&#xff08;每个数组中取一个值&#xff09;&#xff0c;并返回该对数值的差 示例&#xff1a; 输入&#xff1a;{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出&#xff1a;3&…...

Prompt2Model: Generating Deployable Models from Natural Language Instructions

本文是LLM系列文章&#xff0c;针对《 Prompt2Model: Generating Deployable Models from Natural Language Instructions》的翻译。 Prompt2Model&#xff1a;从自然语言指令生成可部署模型 摘要1 引言2 Prompt2Model框架3 参考实现4 实验设置5 实验结果6 讨论与结论不足道德…...

前端埋点 sendBeacon 替代方式

看英文文档真的很重要 sendBeacon 限制比较多, 容易跨域, 跨域时候还必须指定请求头, 不能使用通配符来解决跨域 文档地址 文档里面说 fetch 其实可以代替 sendBeacon 原文: Note: For use cases that need the ability to send requests with methods other than POST, or …...

面试官问我MySQL和MariaDB的联系和区别,这我能不知道?

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…...

1.网络空间搜素引擎

网络空间搜素引擎 https://cybermap.kaspersky.com/cn 世界所以带有ip的网络设备互联组成的空间叫做网络空间 地址 &#xff1a;shodan.io 简介 &#xff1a; 这句话还是有点东西得 。 区别&#xff1a; 平常得搜素引擎主要搜网页&#xff0c;shadan可以搜所以带有ip地址…...

《安富莱嵌入式周报》第321期:开源12导联便携心电仪,PCB AI设计,150M示波器差分探头,谷歌全栈环境IDX,微软在Excel推出Python

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1ju4y1D7A8/ 《安富莱嵌入式周报》第321期&#xff1a;开源12导…...

前端开发必备的网站

前端开发必备的网站及官网 说明&#xff1a; 这里记录了我本人平时开发所用到的网站&#xff0c;对我还是有帮助的&#xff0c;后续会接着补充进来&#xff0c;一方面是为了记录&#xff0c;另一方面也可以帮助到大家… 网站名称及描述网址Elememt-ui (组件库)Elememt-ui&…...

Java运行时jar时终端输出的中文日志是乱码

运行Jar时在控制台输出的中文日志全是乱码&#xff0c;这是因为cmd/bash默认的编码是GBK&#xff0c;只要把cmd的编码改成UTF-8即可 两种方式修改&#xff1a;临时修改和注册表永久修改 临时修改 只对当前的cmd页面有效&#xff0c;关闭后重新打开都会恢复成GBK, 打开cmd&am…...

Vue框架--Vue中el和data的两种写法

data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例&#xff0c;随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择&#xff1a;目前哪种写法都可以&#xff0c;以后学习到组件时&#xff…...

【数据结构】 二叉树面试题讲解->贰

文章目录 &#x1f30f;引言&#x1f384;[二叉树遍历](https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking)&#x1f431;‍&#x1f464;题目描述&#…...

C和SystemVerilog联合仿真

想要联合仿真一个c程序和verilog表示的硬件&#xff0c;可以用如下方法&#xff08;DPI&#xff09;&#xff1a; 先写一个.c文件funcs.c #include <stdio.h> #include "svdpi.h"extern int sayHello();void something() {printf("something\n");s…...

15-mongodb

一、 MongoDB 简介 1 什么是 MongoDB MongoDB 是一个基于分布式文件存储的数据库。由 C语言编写。在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系…...

使用Python轻松管理Word页脚

在日常的办公自动化中&#xff0c;处理Word文档是许多人绕不开的环节。无论是生成报告、合同&#xff0c;还是制作项目文档&#xff0c;Word都是一个不可或缺的工具。然而&#xff0c;当文档数量庞大&#xff0c;或者需要频繁更新时&#xff0c;那些看似简单的重复性任务&#…...

Fish Speech 1.5 Web界面保姆级教程:上传参考音频→文本对齐→语音生成全链路

Fish Speech 1.5 Web界面保姆级教程&#xff1a;上传参考音频→文本对齐→语音生成全链路 你是不是也想用AI生成和自己声音一模一样的语音&#xff1f;Fish Speech 1.5就能帮你实现这个愿望&#xff01;这个强大的语音合成工具不仅能生成自然流畅的语音&#xff0c;还能通过参…...

Krita AI Diffusion IP-Adapter功能异常深度排查与解决方案

Krita AI Diffusion IP-Adapter功能异常深度排查与解决方案 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.com/g…...

如何将笔记从 iCloud 传输到 iPhone:分步指南

iPhone 上的“备忘录”应用是一款便捷的工具&#xff0c;可以用来记录待办事项、日记、想法等等。它能帮助我们追踪需要完成的事情。借助 iCloud 的自动同步功能&#xff0c;你的备忘录可以安全地存储在云端&#xff0c;并可通过任何 Apple 设备甚至电脑访问。将笔记从 iPhone …...

技术Lead:不亲手解决问题,你的位置还稳吗?

做到技术Lead这个位置&#xff0c;很多人开始纠结一件事——到底该不该自己动手&#xff1f;技术Lead的尴尬&#xff0c;其实很具体比如前端设计阶段&#xff0c;团队在讨论一个时序收敛问题&#xff0c;工程师说某条路径的slack是-0.3ns&#xff0c;建议加pipeline。这时候Lea…...

教育博主私藏!PPT生成网站实用指南

作为一名教育博主&#xff0c;我深刻体会到制作 PPT 是教育工作者日常工作中不可或缺的一部分。借助合适的工具&#xff0c;能有效降低 PPT 制作门槛&#xff0c;提升演示内容的专业度和吸引力。今天&#xff0c;就给大家分享几款亲测好用的 PPT 生成网站&#xff0c;助力大家高…...

Starry Night Art Gallery效果展示:黄金渐变按钮交互+实时生成反馈

Starry Night Art Gallery效果展示&#xff1a;黄金渐变按钮交互实时生成反馈 1. 沉浸式艺术体验&#xff1a;当AI遇见文艺复兴 想象一下&#xff0c;你走进的不是一个冰冷的AI工具界面&#xff0c;而是一座数字艺术殿堂。四周是深邃的墨蓝色背景&#xff0c;如同梵高笔下的夜…...

避开这些坑!在PX4 1.14.0上添加自定义串口传感器的完整避坑指南

PX4 1.14.0自定义串口传感器开发实战&#xff1a;从设备注册到数据解析全链路避坑指南 当你在PX4飞控上尝试接入一款新型激光雷达时&#xff0c;是否遇到过这样的场景&#xff1a;按照官方文档一步步操作&#xff0c;编译通过后却发现传感器始终无法输出有效数据&#xff1f;本…...

快速原型构建遇阻?用快马AI一键绕过npm error 128,聚焦核心功能验证

最近在尝试用Node.js快速验证一个Web服务原型时&#xff0c;遇到了烦人的npm error code 128问题。这个错误通常和Git仓库权限相关&#xff0c;会直接卡住依赖安装流程。经过一番折腾&#xff0c;我总结出一套在InsCode(快马)平台快速绕开这个坑的实践方案&#xff0c;分享给同…...

【以太网帧格式】

以太网帧格式一、顺序二、分析一、顺序 前导码 | 帧开始定界符 | 目的MAC | 源MAC | 类型&#xff08;长度&#xff09; | 数据字段 | 帧校验序列FCS3 &#xff08;以太网帧最小帧长&#xff1a;64 字节&#xff0c;最大帧长&#xff1a;1518 字节。&#xff09; 二、分析 1…...