RISC-V中的acquire和release

news2025/1/12 10:53:10

RISC-V中,有两类原子操作指令:

⚫ 内存原子操作(AMO)

⚫ 加载保留/条件存储(load reserved / store conditional)

此处我们先看下LR和SC指令;

引入的原因

       编程语言的开发者会假定体系结构提供了原子的比较-交换(compare-and-swap)操作:

       比较一个寄存器中的值和另一个寄存器中的内存地址指向的值,如果它们相等,将第三个寄 存器中的值和内存中的值进行交换。

       这是一条通用的同步原语,其它的同步操作可以以它为 基础来完成;

       LR/SC的引入,就是为了实现这个操作;

具体规格

部分内容转载自:RISC-V 原子指令介绍 - 泰晓科技 (tinylab.org)

lr.{w/d}.{aqrl} rd, (rs1)

r 指令是从内存地址 rs1 中加载内容到 rd 寄存器。然后在 rs1 对应地址上设置保留标记(reservation set)。其中 w/d 分别对应 32 位/64 位版本。

sc.{w/d}.{aqrl} rd, rs2, (rs1)

  • sc 指令在把 rs2 值写到 rs1 地址之前,会先判断 rs1 内存地址是否有设置保留标记
  • 如果设置了,则把 rs2 值正常写入到 rs1 内存地址里,并把 rd 寄存器设置成 0,表示保存成功。如果 rs1 内存地址没有设置保留标记,则不保存,并把 rd 寄存器设置成 1 表示保存失败。
  • 不管成功还是失败,sc 指令都会把当前 hart 保留的所有保留标记全部清除。其中 w/d 分别对应 32 位/64 位版本。

     

注意事项:

  • RISC-V 的 Spec 中只规定了 sc 指令如果失败了,会往 rd 寄存器中写入非零值,并不一定是 1;
  • 对于 lr/sc 指令,要求 rs1 寄存器中的地址是按宽度对齐的,比如 lr.w 要求 4 字节对齐,sc.d 要求 8 字节对齐。否则会触发非对齐异常。
  • RISC-V 对 LR 和 SC 之间的指令是有限制的:
    • LR 和 SC 之间最大只能包含 16 个指令;
    • 这些指令只能使用基础整数指令集(指令集 “I”,不包含内存访问指令,跳转指令,fence 和 system 指令;
    • 如果违反了这些限制,LR/SC 指令的效果是不受约束的,可能在一些芯片实现上能保证原子性,在另外一些芯片实现上不能保证。
  • SC指令不一定执行成功,只有满足后面这四个条件,它才能执行成功:
    • LR和SC指令成对地访问相同的地址。
    • LR和SC指令之间没有任何其它的写操作(来自任何一个hart)访问同样的地址。-
    • LR和SC指令之间没有任何中断与异常发生。-
    • LR和SC指令之间没有执行MRET指令。

Memory order

部分参考:RISC-V原子指令LR/SC_riscv lr sc-CSDN博客

  • RISC-V 和 ARM 类似,内存模型都是弱内存模型(relax memory model),这意味着,在不加额外限制的情况下,内存访问指令并不会完全按照指令顺序执行。
  • RISC-V 有一个 FENCE 指令,可以用来显式添加内存顺序限制。
  • 为了提高效率,RISC-V 为每个原子指令都预留 aq/rl 两个比特位,从而可以很方便在原子指令上施加额外的内存顺序限制。
  • 原子指令是用来在不同 hart 之间做同步用的,而内存访问顺序强调的是同一个 hart 内的执行顺序。
  • LR/SC 和 AMO 指令就是通过这两个后缀来添加额外的内存顺序限制
  • 每个指令的这两个bit的组合代表的含义如下:

     

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

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

相关文章

docker-compose示例:nacos单机部署

前面咱们完成了docker基本环境搭建,下面就趁热打铁来练习下nacos的单机部署。 参考官方文档:Nacos Docker 快速开始。考虑到官方搭建教程过于精炼,笔者把搭建过程分享给大家。 文章目录 下载最新部署源码解决网络导致的sql文件下不下来docke…

保姆级-C#与Halcon的窗体界面展示阈值分割图像教程(机器视觉保姆级教程)

经历上一篇《零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功》的发布已经过去三天啦, 零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功_添加halcondotnet.dll-CSDN博客 在友友的催更下…

树链剖分学习笔记

前言 树链剖分这个东西呢,简而言之就是把一些树上的操作转换成线性的问题。那看起来平平无奇的树链剖分,为什么很多人就是喜欢使用他呢,那想必肯定是有原因的,我们先卖个关子,先看一下树链剖分怎么写,原理…

DMA(hal库)

DMA(直接存储器存取) DMA(Direct Memory Access,直接内存访问)是一种允许外设或内存之间直接传输数据的技术,而无需 CPU 参与。这能显著提高数据传输效率并减少 CPU 的负担。 使用 DMA 通常涉及以下步骤&…

图片转PDF怎么转?教你3种快捷方便的jpg转pdf方法

图片文件以及PDF文档已经是我们工作当中不可或缺的一部分,我们在一些商务合作的场景下经常需要把拍摄下来的合同、企划书、画册等图片内容转换为PDF格式后再发送,这样能够极大程度的保证文件的安全性,那么图片应该如何转换成PDF文件呢?今天来…

如何制作统信UOS启动盘?

如何制作统信UOS启动盘? 一、下载UOS系统安装镜像二、在UOS系统环境下制作启动盘步骤一:准备U盘步骤二:打开启动盘制作工具步骤三:选择ISO镜像文件步骤四:选择安装介质并格式化步骤五:等待制作完成 三、在W…

(LLM) 很笨

大型语言模型 (LLM) 并非你所想的那样。你被骗了。LLM 很笨,非常笨。事实上,它们更接近数据库,而不是人类。 这就是为什么人工智能仍然处于征服智能的第一步……如果有的话。 终极煤气灯效应 建立前沿人工智能的成本很高。前沿人工智能需要大…

Stable Diffusion 使用详解(8)--- layer diffsuion

背景 layer diffusion 重点在 layer,顾名思义,就是分图层的概念,用过ps 的朋友再熟悉不过了。没使用过的,也没关系,其实很简单,本质就是各图层自身的编辑不会影响其他图层,这好比OS中运行了很多…

10月天津人工智能主题——第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

【ACM出版 | IEEE&ACM院士、CCF杰出会员担任组委| 往届会后3个半月检索 】 第三届人工智能与智能信息处理国际学术会议(AIIIP 2024) 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 中国…

无人机飞手培训:考证、组装、维修技术详解

随着无人机技术的飞速发展,无人机已广泛应用于航拍、农业、环境监测、救援等多个领域,成为现代社会不可或缺的工具之一。作为无人机操作的核心——无人机飞手,其专业技能的掌握至关重要。本文档将详细解析无人机飞手培训的关键环节&#xff0…

关于Python的20个奇技淫巧

Python有非常多有趣使用的技巧,下面列举20个短小精炼的用法,其中既包含常规语法,又有第三方库的妙用,体现了python简单即美的编程哲学。 快速实现字频统计 from collections import Counterwords 我明白你的意思,你…

python将字典数据保存为json文件

目录 一、json库介绍 二、字典生成json文件 1、导入 json 模块 2、将字典数据保存为 json 文件 (1) 创建一个python字典 (2) 指定要保存的 json 文件路径 (3) 将字典数据存为 json 文件 3、读取 json文件,并打印 一、json库介绍 方法作用json.dumps()将py…

[java][mybatis]generatorConfig.xml配置信息详细

generatorConfig.xml配置信息详细 mybatis-generator有三种用法:命令行、eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上可以通用。 下面是从官网上的截图: 在MBG中,最主要也最重要的就是…

拒绝拖延!Kimi助你一天内速成论文初稿!

撰写学术论文是一项需要周密计划和精确执行的任务。它要求作者对文章的每个部分进行深入思考,以确保论文结构的合理性和论述的清晰度。利用Kimi的功能,我们可以更系统地进行写作,从构思到最终成稿,逐步构建出一篇高质量的学术论文…

短视频SDK解决方案,高效集成,助力商业变现

美摄科技,作为业界领先的多媒体技术服务商,其全面升级的短视频SDK解决方案,旨在为开发者与内容创作者提供一站式、高效能的创作工具,让每一个灵感都能瞬间转化为触动人心的视频作品。 【一站式解决方案,重塑短视频创作…

外包出来,面试5次全挂,心态蹦了......

大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了,长时…

Web漏洞介绍和Sql注入漏洞

常规渗透测试流程 漏洞探测包括:web漏洞测试,系统漏洞测试 工具探测、手工验证 优先找的漏洞:中间(件)漏洞、框架漏洞...webserver 知道创宇 Seebug 漏洞平台 - 洞悉漏洞,让你掌握前沿漏洞情报&#xff…

API容易被攻击,如何做好API安全

随着互联网技术的飞速发展和普及,网络安全问题日益严峻,API(应用程序接口)已成为网络攻击的常见载体之一。API作为不同系统之间数据传输的桥梁,其安全性直接影响到整个系统的稳定性和数据的安全性。 根据Imperva发布的…

docker-harbor私有仓库部署和管理

harbor:开源的企业级的docker仓库软件 仓库:私有仓库 公有仓库 (公司内部一般都是私有仓库) habor 是有图形化的,页面UI展示的一个工具,操作起来很直观。 harbor每个组件都是由容器构建的,所…

CocosCreator3.8 IOS 构建插屏无法去除的解决方案

CocosCreator3.8 IOS 构建插屏无法去除的解决方案 在实际项目开发过程中,我们通常无需CocosCreator 自带的插屏,一般采用自定义加载页面。 然后在构建IOS 项目时,启用(禁用)插屏无法操作,如下图所示&#…