RISCV指令集体系简读之RV32I

news2024/9/22 21:26:30
  1. RV32I 指令格式

  • 用于寄存器-寄存器操作的R类型指令
  • 用于短立即数和访存load操作的I型指令
  • 用于访存store操作的s型指令
  • 用于条件跳转操作的B类型指令
  • 用于长立即数的U型指令
  • 用于无条件跳转的J型指令

特点:

  • 所有指令都是32bits, 简化了指令解码;
  • RISV-V指令提供3个寄存器操作数,这样的好处就是当一个操作需要3个操作数时,一条指令就可以完成,而不需要用其他的指令来辅助;
  • 所有指令,要读写的寄存器标识符所在的位置是固定的,解码逻辑可以简化;
  • 立即数总是符号位扩展的,符号位总是在指令中最高位。这意味着可能成为关键路径的立即数符号扩展,可以在指令解码之前进行;

寄存器个数:x0~x31, 其中x0固定为0;

RV32I 整数计算

  • RISC-V中没有字节或半字宽度的整数计算操作。操作始终 是以完整的寄存器宽度。内存访问需要的能量比算术运算高几个数量级。因此低宽度的数 据访问可以节省大量的能量,但低宽度的运算不会。
  • RV32I 也不包含乘法和除法,它们包含在可选的RV32M扩展中;

RV32I 的 Load和Store

  • 除了提供32位字(lw,sw)的load和store外,RV32I 支持load有符号和无符号字节和半字(lb,lbu,lh,lhu)和store字节和半字(sb,sh)。有符号字节和半字符号扩展为32位再写入目的寄存器。
  • 即使是自然数据类型更窄,低位宽数据也是被 扩展后再处理,这使得后续的整数计算指令能正确处理所有的32位。在文本和无符号整数 中常用的无符号字节和半字,在写入目标寄存器之前都被无符号扩展到32位。
  • 虽然ARM-32和MIPS-32要求存储在内存中的数据,要按照数据的自然大小进行边界 对齐,但是RISC-V没有这个要求。

RV32I 条件分支

  • RV32I 可以比较两个寄存器并根据比较结果上进行分支跳转。
  • 比较可以是:相等 (beq),不相等 (bne),大于等于(bge),或小于(blt)。最后两种比较有符号比 较,RV32I也提供相应的无符号版本比较的:bgeu和bltu。
  • RISC-V去掉了MIPS-32,Oracle SPARC等指令集中被 广为诟病的延迟分支特性等。
  • 省略了x86-32中的循环指令:loop,loope,loopz,loopne, loopnz。

RV32I 无条件跳转

  • 跳转并链接指令(jal)具有双重功能。
    • 若将下一条指令PC + 4的地址保存 到目标寄存器中,通常是返回地址寄存器ra(见图2.4),便可以用它来实现过程调用。
    • 如果使用零寄存器(x0)替换ra作为目标寄存器,则可以实现无条件跳转,因为x0不能 更改。
  • RV32I避开了错综复杂的程序调用指令,例如x86-32的进入和离开 指令,或Intel Itanium,Oracle SPARC 和 Cadence Tensilica 中的寄存器窗口。

RV32I 杂项 

  • 控制状态寄存器指令 (csrrc、csrrs、csrrw、csrrci、csrrsi、csrrwi), 使我们可以轻松地访问一些程序性能计数器。
  • ecall指令用于向运行时环境发出请求,例如系统调用。调试器 使用ebreak指令将控制转移到调试环境
  • fence 指令对外部可见的访存请求,如设备I / O和内存访问等进行串行化。
  • fence.i指令同步指令和数据 流。在执行fence.i指令之前,对于同一个硬件线程,RISC-V不保证用存储指令写到内存 指令区的数据可以被取指令取到。

对于RV32I总的特点为:

⚫ 32位字节可寻址的地址空间

⚫ 所有指令均为32位长

⚫ 31个寄存器,全部32位宽,寄存器0硬连线为零

⚫ 所有操作都在寄存器之间(没有寄存器到内存的操作)

⚫ 加载/存储字加上有符号和无符号加载/存储字节和半字

⚫ 所有算术,逻辑和移位指令都有立即数版本的指令

⚫ 立即数总是符号扩展

⚫ 仅提供一种数据寻址模式(寄存器+立即数)和PC相对分支

⚫ 无乘法或除法指令

⚫ 一个指令,用于将大立即数加载到寄存器的高位,这样加载32位常量到寄存器只需要两条指令

RV32I与ARM/MIPS/X86所具备的优势:

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

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

相关文章

SuperMap GIS基础产品FAQ集锦(20240415)

一、SuperMap iDesktopX 问题1:请教一下,同一份数据,用idesktop11.0.1、idesktopX11.1.1和idesktopX11.1.1的临时包,做同一分析,得到的结果数据集都不一样,有的是57条,有的是86条,有…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

【C++语言】初步认识面向对象编程类和对象(上)

文章目录 前言一.初步认识面向过程和面向对象编程1.面向过程编程初步认识2.面向对象编程初步认识 二.C类1. 类的引入:2. 类的定义3.类的访问限定符&&封装3.1 访问限定符3.2 封装 4.类的实例化5.如何计算类的大小 总结C语言系列学习目录 前言 面向对象编程 类…

深度探索:Secure Hash Algorithm(SHA)全景解析

title: 深度探索:Secure Hash Algorithm(SHA)全景解析 date: 2024/4/15 18:33:17 updated: 2024/4/15 18:33:17 tags: SHA安全抗碰撞性算法版本实现细节性能优化发展历史应用案例 密码学中的哈希函数 一、哈希函数的定义 哈希函数是一种数…

车载终端设备主板方案_MTK平台智能后视镜行车记录仪PCBA定制开发

智能后视镜集成了车辆行车记录、倒车影像、AR实景导航、语音助手、ADAS辅助、云电子狗、蓝牙通话、影音娱乐等功能,为驾驶者提供全方位的驾驶辅助体验。 智能后视镜主板解决方案,采用了联发科MT6762八核处理器,拥有主频2.0GHz,采用…

Ubuntu与主机windows共享文件夹

一、创建共享文件夹: 虚拟机->设置->选项->共享文件夹->总是启用->选择本地的共享文件夹(如E:\Share)->确定。 二、设置挂载: 首先赋予/etc/fstab文件可编辑的权限; sudo chmod 777 /…

Langchain入门到实战-第二弹

Langchain入门到实战 Langchain快速入门官网地址Langchain概述Langchain调用大模型更新计划 Langchain快速入门 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://python.langchain.com/Langchain概述 LangChain是一个…

从旺店通·旗舰奇门到金蝶云星空通过接口配置打通数据

从旺店通旗舰奇门到金蝶云星空通过接口配置打通数据 对接系统旺店通旗舰奇门 慧策(原旺店通)是一家技术驱动型智能零售服务商,基于云计算PaaS、SaaS模式,以一体化智能零售解决方案,帮助零售企业数字化智能化升级&#…

实时渲染 -- 流明(Lumen)

首先我们需要知道Lumen需要解决哪些问题。 很多人都会问,既然已经有了硬件的Raytracing ,我们为什么还要Lumen呢。这是由于很多硬件并不支持 Realtime Raytracing,对于支持的那些硬件, N 卡还算是勉强可以,而 A 卡支持…

科技感画册制作方法,视觉效果直接拉满

随着科技的不断进步,科技感画册制作也变得更加精彩和引人注目。通过巧妙地运用先进的设计工具和技术,以及结合创新的视觉元素,可以轻松地将画册的视觉效果直接拉满。 那你想知道怎么制作吗?现在我来教你这个方法吧,方法…

第二期书生浦语大模型训练营第三次笔记

RAG RAG是什么? RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…

Unity开发holoLens2应用时的ProjectSettings配置

正确的进行Unity工程配置,才能进行后续的【发布】和【部署】操作… 本案例开发环境说明: Unity2021.3.18Win10VS2022HoloLens2 一、平台设置 二、Quality画面质量设置 三、Player玩家设置 四、XR-Plug设置 五、环境测试 导入一个官方demo&#xff0c…

安装jmeter和ant

安装jmeter和ant 安装java环境 安装jdk和jre 下载Java SE Development Kit 8 Java SE subscribers will receive JDK 8 updates until at least December 2030. 选择指定包进行安装,如windows 共享账号参考:Oracle官网 账号及密码 目前官网下载低…

论文速读:Do Generated Data Always Help Contrastive Learning?

在对比学习领域,最近很多研究利用高质量生成模型来提升对比学习 给定一个未标记的数据集,在其上训练一个生成模型来生成大量的合成样本,然后在真实数据和生成数据的组合上执行对比学习这种使用生成数据的最简单方式被称为“数据膨胀”这与数据…

Android,AMS、WMS、PKMS添加动态控制debug开关功能

问题背景 在framework源码中有很多debug开关,通常我们想要看某个模块的日志,比如说广播,就需要去修改源码,把对应的debug值改为true,但是这种方法耗时耗力,比如说我想看sendBroadcast的流程,但是BroadcastQueue中有很多debug开关,如下: 这种就需要去修改对应的源码才…

消费增值新模式:让每一分钱都更有价值

亲爱的消费者们,大家好!今天我想和大家探讨一种新颖的消费方式——消费增值,它让您的每一次消费都蕴含了额外的价值,让消费变得更加有意义。 在过往的消费观念里,我们往往只是简单地将钱花出去,购买所需的商…

文件传输工具WinSCP安装与使用教程

目录 一、WinSCP下载 二、WinSCP安装 三、WinSCP使用 WinSCP介绍: WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。 一、WinSCP下…

图片壁纸社区app前后端开源小程序源码

图片壁纸社区APP前后端开源小程序源码,修改了开源版的前端样式,变成图片社区,也可以用来作为壁纸 源码下载地址抄笔记 (chaobiji.cn)

SpringBoot与Vue前后分离项目中返回结果为Long类型精度丢失问题处理

SpringBoot与Vue前后分离项目中返回结果为Long类型精度丢失问题处理 文章目录 SpringBoot与Vue前后分离项目中返回结果为Long类型精度丢失问题处理1. 前后分离环境1. 表结构2. 实体类 2. 问题描述3. 原因分析4. 处理方法(后端)1. 处理方式1(JsonSerialize注解)2. 处理方式2(Jso…

【InternLM 实战营第二期笔记01】书生·浦语大模型全链路开源体系+InternLM2技术报告

本次课程链接在GitHub上:InternLM/Tutorial at camp2 (github.com) 第一次课程录播链接:书生浦语大模型全链路开源体系_哔哩哔哩_bilibili InternLM2技术报告:arxiv.org/pdf/2403.17297.pdf 一、书生浦语大模型全链路开源体系笔记 Intern…