RISC-V笔记——RVWMO基本体

news2024/11/28 12:39:08

1. 前言

RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),它是Release Consistency的扩展,因此,RVWMO的基本特性类似于RC模型。

2. RC模型

Release consistency(RC)的提出是基于一个观察:将所有同步操作用FENCE围在一起是多余的。随着对同步操作的深入理解,同步操作acquire只需要后面放一个FENCE,同步操作release只需要前面放一个FNECE。因此RC提供了ACQUIRE和RELEASE操作,它们和FENCE类似,但是只在一个方向上对memory进行保序,而不是像FENCE那样在两个方向上都进行保序。更一般地说,RC只需要:

  • ACQUIRE -> Load, Store   (Load, Store -> ACQUIRE方向不保序)
  • Load, Store -> RELEASE    (RELEASE -> Load, Store 方向不保序)
  • ACQUIRE -> ACQUIRE
  • ACQUIRE -> RELEASE
  • RELEASE -> ACQUIRE
  • RELEASE -> RELEASE

如下图,注:LDAR代表load具有acquire语义,STLR代表store具有release语义。

3. RVWMO基本体

在RISC-V中,与RC类似,load和store指令可以携带其它语义:load指令可以携带ACQUIRE语义,store指令可以携带RELEASE语义,以及RMW指令可以携带ACQUIRE、RELEASE或两者都具有。有两种ACQUIRE语义:ACQUIRE-RCpc和ACQUIRE-RCsc。同样,也有两种RELEASE语义:RELEASE-RCpc和RELEASE-RCsc。“RCpc语义”代表“Acquire-RCpc”或“Release-RCpc”。“RCsc语义”代表“Acquire-RCsc”或“Release-RCsc”。Load(store)可以携带任何一种ACQUIRE(RELEASE)语义,而RMW只能携带RCsc语义。这些语义有如下保序:

  • ACQUIRE -> Load,Store   (ACQUIRE代表ACQUIRE-RCsc和ACQUIRE-RCpc)
  • Load,Store -> RELEASE (RELEASE 代表RELEASE-RCsc和RELEASE-RCpc)
  • RELEASE-RCsc -> ACQUIRE-RCsc  (注意RELEASE-RCpc -> ACQUIRE-RCpc不成立)

从上述保序公式可以看出:

  1. 带有RELEASE-RCpc的older store指令的写数据可以直接被forward给带有ACQUIRE-RCpc的同地址younger load指令。
  2. 如果它们两个是不同地址,那么在younger load指令会先于older store指令出现在global memory order上。

上述这两点是RCsc不允许的,RCsc具有更强的保序行为。为什么RCsc和RCpc有这两点区别,可以看它们的全称就知道了。

 “RCpc”代表release consistency with processor-consistent synchronization operations。“RCsc”代表release consistency with sequentially consistent synchronization operations。

RCpc语义有processor-consistent特性。Processor consistency(PC)表示一个Core的store操作按顺序达到其它Core,但不一定同时达到其它Core。TSO模型是PC的特殊情况,其中每个Core都可以立即看到自己的Store操作,但是当任何其它Core看到Store操作时,所有其它Core都可以看到它,这个属性称为write atomicity。

RCsc语义有sequentially consistent特性。Sequential consistency (SC)模型中,memory order保留了每个core的program order。也就是SC模型为同一个线程的两个指令间的所有四种load和store组合(Load -> Load, Load -> Store, Store -> Store, and Store -> Load)保留了顺序。

因此RCpc和RCsc在行为上还是有些区别,RCsc语义可以让RVWMO模型像SC(Sequential Consistency)模型行为一样,RCpc语义可以让RVWMO像TSO(Total Store Order)内存模型行为一样,这极大方便了其它CPU内存模型的代码移植到RISC-V CPU上运行。比如要迁移MIPS R10000的代码到RISC-V CPU上,可以使用RCsc的load和store指令。要迁移Intel/AMD的代码到RSIC-V CPU上,可以使用RCpc的load和store指令。

如下图,注:LDAR代表load具有acquire-RCsc语义,STLR代表store具有release-RCsc语义。LDAPA代表load具有acquire-RCpc语义,STLAR代表store具有release-RCpc语义。

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

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

相关文章

基于x86_64汇编语言简单教程1: 环境预备与尝试

目录 前言 环境配置 基本硬件与操作系统要求 WSL VSCode基本配置(For Windows) 安装基本的依赖 为您的VSCode安装插件: 学习要求 入门 先试试味道 前言 笔者最近正在梭哈使用NASM汇编器的x86 32位汇编,笔者这里记录一下一个晚上的成果。 环境…

【含开题报告+文档+PPT+源码】贫困儿童一对一扶贫帮扶系统设计与实现

开题报告 根据《中华人民共和国慈善法》第五十八条规定,慈善组织确定慈善受益人,应当坚持公开、公平、公正的原则,不得指定慈善组织管理人员的利害关系人作为受益人[2]。以上所列举的平台基本没有做到公开、公平、公正的原则,例如…

一起搭WPF架构之livechart的MVVM使用介绍

一起搭WPF架构之livechart使用介绍 前言ModelViewModelView界面设计界面后端 效果总结 前言 简单的架构搭建已经快接近尾声了,考虑设计使用图表的形式将SQLite数据库中的数据展示出来。前期已经介绍了livechart的安装,今天就详细介绍一下livechart的使用…

应用层协议 序列化

自定义应用层协议 例子:网络版本计算器 序列化反序列化 序列化:将消息,昵称,日期整合成消息-昵称-日期 反序列化:消息-昵称-日期->消息,昵称,日期 在序列化中,定义一个结构体…

Python案例小练习——小计算器

文章目录 前言一、代码展示二、运行展示 前言 这是用python实现一个简单的计器。 一、代码展示 def calculate(num1, op, num2):if op "":return float(num1) float(num2)elif op "-":return float(num1) - float(num2)elif op "*":return…

案例分享-优秀蓝色系UI界面赏析

蓝色UI设计界面要提升舒适度,关键在于色彩搭配与对比度。选择柔和的蓝色调作为主色,搭配浅灰或白色作为辅助色,能营造清新、宁静的氛围。同时,确保文字与背景之间有足够的对比度,避免视觉疲劳,提升阅读体验…

利用 OBS 推送 WEBRTC 流到 smart rtmpd

webrtc whip 推流 & whep 拉流简介 RFC 定义 通用的 webrtc 对于 SDP 协议的交换已经有对应的 RFC 草案出炉了。这就是 WHIP( push stream ) & WHEP ( pull stream ) . WHIP RFC Link: https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html WHEP RFC Link:…

新书速览|Android智能座舱开发:从源码到实践

《Android智能座舱开发:从源码到实践》 本书内容 《Android智能座舱开发:从源码到实践》是一本专注于Android智能座舱系统开发与优化的实战指南。《Android智能座舱开发:从源码到实践》共9章,第1章从搭建源码编译环境开始,详细指导读者如何下载和编译An…

前端SSR框架(Next、Nuxt)利用宝塔面板部署

1、部署的本质 SSR服务端渲染的框架部署区别于常规的CSR项目的部署,并不是打包之后访问某个文件就行,而是需要在服务器中运行项目之后访问某个地址,无论是基于Vue的Nuxt.js框架还是基于React的Next.js框架道理都是一样的 因此区别于CSR我们…

2024年中国工业大模型行业发展研究报告|附43页PDF文件下载

工业大模型伴随着大模型技术的发展,逐渐渗透至工业,处于萌芽阶段。 就大模型的本质而言,是由一系列参数化的数学函数组成的计算系统,且是一个概率模型,其工作机制是基于概率和统计推动进行的,而非真正的理解…

to_sql报错not all arguments converted during string formatting

报错: DatabaseError: Execution failed on sql SELECT name FROM sqlite_master WHERE typetable AND name?;: not all arguments converted during string formattingb 报错的代码如下: import pymysql import pandas as pd con pymysql.connect(…

如何测量场景的照度和色温?

1、问题背景 在我们平常的工作当中,经常都会使用照度计去测量当前场景的照度和色温,但测量时照度计具体该放在什么位置呢? 是和被测物体表面平行放置,还是和摄像头镜头位置平齐放置呢?本文将从照度、色温的概念出发&am…

ntfs MFT损坏(ntfs文件系统故障)导致oracle异常恢复---惜分飞

客户虚拟化环境,由于断电,启动数据库报ORA-01157错误,通过操作系统层面查看,发现文件是存在的,但是dbv检测报不可访问 感觉是文件系统损坏了,尝试把该文件拷贝到其他磁盘 查看操作系统事件,确认是ntfs文件系统的MFT损坏 基于这种情况,通过文件系统恢复工具进行恢复该文件…

【Java】Java 的反射机制(二):类的加载(拓展)

Java 的反射机制(二):类的加载(拓展) 1.类的加载过程1.1 Java 内存分析1.2 类的加载过程1.3 类的加载与 ClassLoader 的理解1.4 什么时候会发生类的初始化 2.类加载器 1.类的加载过程 1.1 Java 内存分析 1.2 类的加载…

观测云 AI 助手上线:智能运维,从此触手可及!

在当前的云原生时代,运维的复杂性和数据的爆炸式增长给企业带来了前所未有的挑战。为了帮助企业高效应对这些挑战,观测云自豪地推出了 AI 助手——智能化的运维助手,让每位用户都能轻松驾驭复杂的可观测性场景。 01 你身边的 PE 助手&#x…

vs2022配置opencv静态库

本文将在windows10环境下,vs2022Cmake3.24.4编译opencv静态库,包括win32-release,win32-debug, x64-release, x64-debug四种; 文章内容有点长,请耐心看下去。 一、安装VS2022 下载链接:https://visualstudio.micros…

【设计模式系列】装饰器模式

目录 一、什么是装饰器模式 二、装饰器模式中的角色 三、装饰器模式的典型应用场景 四、装饰器模式在BufferedReader中的应用 一、什么是装饰器模式 装饰器模式是一种结构型设计模式,用于在不修改对象自身的基础上,通过创建一个或多个装饰类来给对象…

海南聚广众达电子商务咨询有限公司靠谱吗怎么样?

在当今这个数字化浪潮席卷全球的时代,抖音电商以其独特的魅力成为了众多商家争相入驻的新蓝海。而在这片浩瀚的电商海洋中,如何找到一家既专业又可靠的合作伙伴,成为了众多商家心中的一大难题。今天,我们就来深入剖析一下海南聚广…

模电基础(放大电路的频率响应+multisim)

目录 1.频率响应的基本概念 1.1频率响应的基本概念 1.1.1高通滤波器 1.1.2低通滤波器 1.1.3波特图 1.1.4multisim仿真 1.2晶体管高效等效模型 1.2.1晶体管的混合π模型 1.2.2晶体管电流放大倍数的频率响应 ​1.3单管放大电路的频率响应 1.3.1单管共射放大电路的频率响…

如何查看默认网关地址:详细步骤

在日常的网络配置与故障排查中,了解并正确查看默认网关地址是一项基础且至关重要的技能。默认网关是连接本地网络与外部网络(如互联网)的关键节点,它扮演着数据包转发的重要角色。无论是家庭网络、办公室网络还是更复杂的网络环境…