RISCV Reader笔记_5 RV32A,RV32C

news2024/9/19 17:01:22

原子指令

RV32A 是 RISCV 支持原子操作的扩展。主要有两种实现方式:内存原子操作(AMO),加载保留/条件存储(load reserved / store conditional)

1688218941375

1688219029401

AMO:一个处理器对内存的操作不会被打断,其值也不会被其他处理器修改。

load reserved / store conditional:保证了这两条指令的原子性,一个是读取一个值存入目标寄存器,并保存这一记录;一个是如果目标地址存在保留记录,则写入值,并向目标寄存器中写入0的flag,否则保存失败写非0.

lr sc 的应用场景:体系结构常有一个(compare-and-swap)原子比较交换操作。比较寄存器1 2的值,如果相等则把内存中的值写入寄存器3,否则不写入。

这个操作我们需要3个源寄存器,1个目标寄存器。而 lr sc 可以把其拆成两部分。

1688220232523

上例:a0 加载到 a3 里,如果 a1 a3 相等且 a0 有保存记录,把 a2 值存入 a0,且设置 a3=0 标志成功写入。否则循环执行。

也就是说只有 a0 被拿出来过,有保存标志的时候才允许写入。否则存入失败。

1688220542427

a0 地址处的值取出来给 t1,t0 处的值给 a0 的地址里临时存储以前的锁状态。

锁 t0 一开始是1未锁定。然后要锁定的时候,把 t0 赋给 a0 (1),并且把之前 a0 的值取出来给 t1 看是不是1.

是1,说明有其他程序把 t0 也就是1赋值给 a0 里了,说明有人在占用。则等待,不断循环这个过程。

是0,说明还没人在用,可以开始临界区代码。

结束的时候把0寄存器 x0 的值赋值给 a0 表示不再访问临界区资源。

AMO 相比比较交换,在多处理器系统中性能更好,也能提供互斥访问 IO 资源的方法。两种方法各有其亮点。

压缩指令

指令集为了压缩,大多会缩减操作数至两个,缩减立即数域等。以往的 arm thumb2 和 microMIPS 等就是一些对原指令集的优化,但是加重了处理器的负担和程序员的理解难度。

为了减轻负担,RV32C 压缩指令要求:压缩的前提下,压缩的每一条16位指令都要和原指令对标。因此架构师们挑选了以下指令:

1688229039324

  • 常用寄存器不多(a0-a5,s0-s1,sp 以及 ra),因此也不需要太多位存储 rs rt rd 指代哪一个寄存器。
  • 立即数往往很小,因此可以缩减立即数位数。
  • 很多指令的 rd 是源操作数之一,比如 add r0, r0, r1 ,可以缩减。
  • load store 只采用整数倍操作数长度(word)。
  • 用解码器把16位指令全部转化为32位。解码器的电路只占整体的5%,相比起来挺合适的了Thumb2 和 Arm32 这种算两套 ISA,要用两套解码器。

因为要对标原指令,所以有一些指令没有,比如 load and store multiple 这种,因此长度上可能不如 thumb2 等。

不过有些架构师不考虑 RV32C,因为对于一些取指一次能取好几条的处理器系统来说,可能译码阶段是最大的瓶颈,因此16-32转化的解码器阶段会比较大影响性能。

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

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

相关文章

数据库建表之外键关联

0前言 摘自某一段记事:   在实际的开发中,必然遇到“编辑操作”,而编辑操作,看似简单,实则其影响面甚广。本着设计的“贯穿性”和逻辑一致性,本文将按照,创建基础表的字段建议,创…

STM32 Proteus UCOSII系统水塔鱼缸水位控制系统-0052

STM32 Proteus UCOSII系统水塔鱼缸水位控制系统-0052 Proteus仿真小实验: STM32 Proteus UCOSII系统水塔鱼缸水位控制系统-0052 功能: 硬件组成:STM32F103R6单片机 LCD1602显示器多个按键(注水、排水)驱动电路电位…

HOT32-复制带随机指针的链表

leetcode原题链接:复制带随机指针的链表 题目描述 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xf…

企业如何判断是否选择CRM系统?

如今,以客户为中心的观点已经被广泛认可,想要建立以客户为中心的战略离不开CRM客户关系管理系统的应用,企业什么时候需要CRM?附CRM软件的选购指南。当企业出现这4点问题的时候证明是时候部署CRM了。 1.客户资料散乱 通常每个业务…

【结构型设计模式】桥接模式

一、写在前面 桥接模式(Bridge):桥接模式是一种结构型设计模式,其目的是将抽象部分和实现部分分离,允许它们可以独立地变化。该模式通过创建一个桥接类,连接抽象和实现,使得它们可以独立地进行…

【前端|CSS系列第3篇】CSS盒模型、浮动及定位

在前端开发中,CSS是一项重要的技术,用于控制网页的样式和布局。在本系列的第三篇文章中,我们将学习CSS的盒模型、浮动以及定位,这些概念和技术在页面布局中起着至关重要的作用。通过本文的学习,希望能够帮助大家更好地…

阿里云远程仓库环境安装

记录一些基本的命令: 一、apt-get,是一条linux命令,适用于deb包管理式的操作系统(例如Ubuntu系统),主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。 // 常用命令: ap…

沐风老师3DMAX虚线对象插件Dashed使用方法详解

3DMAX虚线对象插件Dashed教程 Dashed虚线对象插件,用于沿拾取路径创建虚线(或实线)几何体对象 【主要特点】 -更多实用参数可以调节。 -沿着样条曲线测量距离值(如:笔划长度、间距、分段长度等)&#xff…

MySql的MVCC_存储引擎_历史_开发模式

概览 一. 多版本并发控制(MVCC)1.概述2.InnoDB的MVCC 二.MySql的存储引擎 一. 多版本并发控制(MVCC) 1.概述 可以认为MVCC是行级锁的一个变种,其在很多情况下避免了加锁操作,因此开销更低。 不同存储引擎的MVCC实现是不同的,但大部分实现了非阻塞的读…

Nginx(5)nginx的负载均衡

负载均衡 负载均衡的原理及处理流程负载均衡的作用 负载均衡常用的处理方式Nginx七层负载均衡Nginx七层负载均衡的指令Nginx七层负载均衡的实现流程 负载均衡状态负载均衡策略负载均衡案例案例一:对所有请求实现一般轮询规则的负载均衡案例二:对所有请求…

红色通信史(二):半部电台起家

上一期,我给大家介绍了“四一二”反革命政变后,我党在上海开通了第一部秘密电台的过程。 秘密电台的开通,标志着我党通信事业正式起步。然而,没过多久,顾顺章叛变,给上海党组织带来了极大的破坏。于是&…

事务

事务回顾MySQL事务Spring事务实现编程式事务实现:声明式事务 Transactional 注解作用范围及名称(value/transactionManager)隔离级别:isolation超时时间:timeout修改只读事务指定异常异常捕获情况 事务失效场景Transac…

高等数学II-知识点(1)——原函数的概念、不定积分、求原函数的两种常用方法 (凑微分法、第二换元法)、分部积分法、有理函数原函数求法、典型三角函数原函数求法

目录 原函数的概念 不定积分 定义 不定积分的基本积分公式 不定积分的运算法则 求原函数的两种常用方法 第一换元法(凑微分法) 第二换元法 分部积分法 有理函数原函数求法 典型三角函数原函数求法 原函数的概念 设在区间上有定义&#xff0c…

Python3 实例(一) | 菜鸟教程(十九)

目录 一、Python Hello World 实例 二、 Python 数字求和 (一)以下实例为通过用户输入两个数字,并计算两个数字之和: (二)两数字运算,求和我们使用了加号 ()运算符,除此外&#…

GB51309实施后对于消防应急照明和疏散指示系统在城市隧道应用中的影响

安科瑞 崔丽洁 【摘要】:应急照明和疏散指示系统被广泛运用于城市隧道、楼宇建筑、地下管廊等各个方面。当隧道这类特殊建筑内出现火灾或事故时,可靠的应急照明和疏散指示系统对于人员的安全逃生有着重要的作用。随着GB51309-2018《消防应急照明和疏散指…

java从入门到起飞(三)——三大结构(顺序结构、分支结构、循环结构)

目录 前提顺序结构分支结构if选择语句switch语句 循环结构for循环语句格式while循环语句格式do…while循环语句三种循环的区别三种循环的区别:for和while的区别:死循环格式: 前提 三大结构也成为流程控制语句,分为三大类&#xff…

flask+uwsgi+docker+nginx 云服务器部署测试平台

flaskuwsgidockernginx 云服务器部署测试平台 开发环境 本次主要是在腾讯云上进行部署,系统是CentOS 7.9 64位,主要使用的软件如下: Python 3.9.5 Pycharm Flask1.0.2 Mysql 5.7 nginx uwsgi 一 安装Nginx 1.更新yum 源 sudo rpm -ivh …

基于Java+Swing+Mysql图书信息管理系统

基于JavaSwingMysql图书信息管理系统 一、系统介绍二、功能展示1.主页2.新增图书信息3.删除图书信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看图书列表、新增图书信息、删除图书信息 运行环境:eclipse、idea、jdk1.8 二、功能展示…

TCP的三次握手,四次挥手

1.TCP协议介绍 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。由IETF的RFC 793 [1] 定义…

云之道知识付费v2 3.1.1独立版小程序系统源码

云之道知识付费v2 3.1.1独立版小程序系统源码 很不错的一款知识丰富小程序,感兴趣的可以自己下载搭建尝试一下。