RV32A\CSR\Counters 指令集

news2024/11/27 21:49:25

RV32A\CSR\Counters指令集

  • 一、RV32A指令集
    • 1、Load-Reserved/Store-Conditional Instructions
      • LR.W
      • SC.W
    • 2、Atomic Memory Operations
      • AMOSWAP.W
      • AMOADD.W
      • AMOAND.W
      • AMOXOR.W
      • AMOOR.W
  • 二、CSR(Control and Status Register) 指令集
      • CSRRW
      • CSRRS
      • CSRRC
    • CSRRWI
      • CSRRSI
      • CSRRCI
  • 三、"Zicntr" and "Zihpm" Extensions for Counters
    • 1、 "Zicntr" Extension for Base Counters and Timers
      • RDCYCLE
      • RDTIME
      • RDINSTRET

一、RV32A指令集

“A”的标准原子指令扩展包含以原子方式读取-修改-写入内存的指令,以支持在同一内存空间中运行的多个 RISC-V harts之间的同步。提供的两种形式的原子指令是加载保留/存储条件指令和原子取操作内存指令。两种类型的原子指令都支持各种内存一致性排序,包括无序、获取、释放和顺序一致的语义。这些指令允许RISC-V 支持 RCsc 内存一致性模型。

1、Load-Reserved/Store-Conditional Instructions

在这里插入图片描述
aq位代表原子内存操作被视为获取访问

rl位代表原子内存操作被视为释放访问

LR.W

LR.W 指令用于实现“加载-保留”操作,将一个字(32 位)从内存中加载到目标寄存器中,并在加载完成后锁定该内存地址,以确保其他处理器在此期间无法访问该内存地址。其语法如下:

lr.w rd, (rs1)

其中 rd 表示目标寄存器,rs1 表示源寄存器,括号中的内容表示内存地址。

SC.W

SC.W 指令用于实现“存储-条件执行”操作,将一个字(32 位)存储到内存中,并检查此前是否已经执行过 LR.W 操作锁定了该内存地址。如果已经被锁定,则存储失败,否则存储成功。其语法如下:

sc.w rd, rs2, (rs1)

其中 rd 表示目标寄存器,rs1 表示源寄存器1(存储地址),rs2 表示源寄存器2(存储值)。

2、Atomic Memory Operations

在这里插入图片描述

原子内存操作 (AMO) 指令为多处理器执行读-修改-写操作同步,并用 R 型指令格式编码。这些 AMO指令从 rs1 中的地址原子加载数据值,将值放入寄存器 rd,将二元运算符应用于加载的值和 rs2 中的原始值,然后将结果存储回去到 rs1 中的地址。

AMOSWAP.W

AMOSWAP.W 指令用于实现“原子交换”操作,其语法如下:

amoswap.w rd, rs2,(rs1)

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

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

相关文章

uniapp上传头像并裁剪图片

第一步写上uniapp自带的选择图片button按钮 点击之后会弹出选择图片的方式 拍照或从相册选择图片后将会跳到图片裁剪 然后我们裁剪完之后点击确定在上传图片 这里是上传图片的接口 拿到本地图片 上传的话自己想以那种方式上传都可以

Multimodal Dynamics:用于多模态融合背景下的分类

Multimodal Dynamics(MD)是可信赖的多模态分类算法,该算法动态评估不同样本的特征级和模态级信息量,从而可信赖地对多模态进行融合。 来自:Multimodal Dynamics: Dynamical Fusion for Trustworthy Multimodal Classi…

代理模式与静态代理、动态代理的实现(Proxy.newProxyInstance、InvocationHandler)

代理模式 代理模式是23种设计模式中比较常用的一种,属于结构型设计模式。在 Android 领域中,有大量的库都使用了代理模式,例如 Retrofit 使用动态代理来实现 API 接口的调用,Dagger 使用代码生成和反射机制来创建依赖注入的代理对…

Bybatis动态SQL的绑定和公共sql语句片段

Mybatis除了大部分动态标签,最后还有三个标签,分别是bind,sql和include: ①bind:这个标签作用就是将OGNL标签里的值,进行二次加工,在绑定到另一个变量里,供其他标签使用 调用getUse…

RocketMQ集群搭建(1)

1.1 各角色介绍 Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局NameServer:管理Broker;举…

【CH32V305FBP6】USBD HS 描述符修改

文章目录 前言设备描述符完整描述符配置描述符CDC 描述符接口关联描述符接口描述符功能描述符端点描述符接口描述符端点描述符 HID 描述符接口描述符 新增一个 HID 设备 前言 USB HS 复合设备,CDCHID 功能:串口、DAP、CAN-HID、RS485 设备描述符 htt…

DockerCompose+Jenkins+Pipeline流水线打包SpringBoot项目(解压安装配置JDK、Maven等)入门

场景 DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射): DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射)-CSDN博客 DockerJenkinsGiteeMaven项目配置jdk、maven、gitee等拉取代…

[12] 使用 CUDA 进行图像处理

使用 CUDA 进行图像处理 当下生活在高清摄像头的时代,这种摄像头能捕获高达1920*1920像素的高解析度画幅。想要实施的处理这么多的数据,往往需要几个TFlops地浮点处理性能,这些要求CPU也无法满足通过在代码中使用CUDA,可以利用GP…

【网络安全的神秘世界】磁盘空间告急?如何解决“no space left on device”的困扰

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 磁盘空间告急?如何解决“no space left on device”的困扰 🙋‍♂️问题描述 错误信息 "write /var/lib/docker/tmp/GetIma…

计算机组成原理-流水CPU-指令流水

一、指令流水的定义 指令流水线是计算机处理器中的一种设计,用于提高指令执行的效率。考虑到执行指令的每个阶段用到的硬件不同,它将处理指令的各个步骤分解为若干个阶段,并允许多个指令在同一时刻在不同的阶段执行,从而实现指令…

InfiniBand网络内计算架构指南

InfiniBand网络内计算知多少? InfiniBand在高性能计算和人工智能领域占据核心地位,其高速、低延迟的网络通信能力支持大规模数据传输与复杂计算。在网络内计算领域,InfiniBand的应用日益广泛,通过内部计算降低延迟,提升…

【霸王餐系统】搭建部署,可设置二级分销

前言: 霸王餐项目通常是由外卖平台或商家发起的一种营销策略,旨在通过提供低成本甚至免费的外卖来吸引消费者,从而增加销量、优化评价并扩大市场影响力。这种项目往往能够实现平台、商家、推广者和消费者四方共赢的局面。 一、项目优势 市…

GPT-4o更易越狱?北航南洋理工上万次测试详解!

GPT-4o,比上一代更容易遭受越狱攻击? 北航和南洋理工的研究人员通过上万次API查询,对GPT-4o的各种模态安全性进行了详细测试。 结果发现,GPT-4o新引入的语音模态带来了新的攻击面,多模态整体安全性不如GPT-4V。 GPT-4o…

海洋气象期刊 | 个人统计

写在前面 这周末两天闲着无聊,统计了一些zotero中自己常看的期刊数量,少于5篇的未进行统计 Journal of the Atmospheric Sciences - (JAS) https://www.ametsoc.org/index.cfm/ams/publications/journals/journal-of-the-atmospheric-sciences/ 73篇 …

用教育邮箱在官网安装origin2024中文版教程

打开origin官网,点击learning Edition,教育版只能维持六个月,但是过期之后可以在官网更新,能够免费使用六次,也就是三年。 OriginLab - Origin and OriginPro - Data Analysis and Graphing Software 填写学校信息&…

鸿蒙开发文件管理:【@ohos.statfs (statfs)】

statfs 该模块提供文件系统相关存储信息的功能,向应用程序提供获取文件系统总字节数、空闲字节数的JS接口。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import stat…

技术干货分享:初识分布式版本控制系统Git

初识Git版本控制 自动化测试代码反复执行,如果借用持续集成工具会提高测试效率,那么需要我们把自动化测试代码发布到正式环境中,这时候用Git版本控制工具高效、稳定、便捷。 分布式版本控制 Git可以把代码仓库完整地镜像下来,有…

每日一练——有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 错误记录 #include<stddef.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef char STDataType;typedef struct Stack {STDataType* a;int capacity;int top; } Stack;vo…

Unity 实现WebSocket 简单通信——客户端

创建连接 ClientWebSocket socket new ClientWebSocket(); string url $"ws://{ip}:{port}"; bool createUri Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out Uri uri); if (createUri) {var task socket.ConnectAsync(uri, CancellationToken.None);task…

Nginx学习笔记(九)location转发后,proxy_pass结尾带 / 和不带 / 的区别

目录 一、知识回顾二、proxy_pass 结尾带 / 和不带 / 的区别2.1 场景假设2.2 实战验证验证1&#xff1a;结尾带/的场景验证2&#xff1a;不带/的场景 2.3 结论 一、知识回顾 之前使用过 Nginx 的小伙伴或许都了解&#xff0c;Nginx 是一款用于请求转发的高性能中间件&#xff…