【计算机组成原理】RV32I指令集

目录

一、RISC-V架构概述

二、RV32I指令集概述

三、RV32I指令格式

四、21条运算指令

五、8条访存指令

六、8条转移指令

七、10条其他指令

八、RV32I的寻址方式


一、RISC-V架构概述

RISC-V指令集起源:

  • 全新的、具有典型RISC特征的指令集架构,2010年加州大学伯克利分校发明,“RISC”指精简指令集计算机,“V”指从RISC-I开始的第五代指令集
  • ARM、MIPS、SPARC、X86等各种指令集架构存在缺陷(多年发展后变得繁冗,且有高昂的专利和架构授权),RISC完全免费开放,标准手册与架构文档共享在网站 www.riscv.org 上
  • RISC性能优越,能够满足从微控制器到超级计算机等各种复杂程度的处理器需求
  • RISC支持从FPGA、ASIC乃至未来器件等多种实现方式,能够高效实现各种微结构,支持定制与加速功能,兼容目前各种现有软件及编程语言

 CISC与RISC对比

二、RV32I指令集概述

  • 指令字长ILEN:固定32位
  • 整数表示:采用补码
  • 整数寄存器个数:32个
  • 指令编码的存储格式:小端模式
  • 指令条数:47条
  • 寄存器位长XLEN = 机器字长
  • 地址空间 = 2 ^ XLEN

RV32I通用寄存器堆

  • 整数寄存器:32×32位,x0~x31
  • 浮点寄存器:32×32位,f0~f31(整数指令集不关注)
  • ABI:规定了每个寄存器的使用约定、寄存器别名

三、RV32I指令格式

  • 指令格式共6种类型,固长32位
  • 操作码字段:opcode,7位,固定在指令字的最低7位,指定指令的格式类型
  • 功能码字段:funct3、funct7,用于定义某类指令的具体指令(区分功能)
  • 寄存器字段:3个,各5位,原寄存器rs1 / rs2、目的寄存器rd,有固定位置
  • 立即数字段:imm,12位 / 20位,需要扩展成32位的立即操作数imm32

 

立即数生成规则

四、21条运算指令

10条R型运算指令:Register

  • 功能:对寄存器数据进行算术逻辑运算,运算结果写入目的寄存器

9条I型运算指令:Immediate

  • 功能:对寄存器与扩展后立即数进行算术逻辑运算,将结果写入目的寄存器

2条U型数据处理指令:大立即数指令

  • lui:load upper immediate
  • auipc:add upper immediate to pc

五、8条访存指令

5条I型装数指令:Load from Memory

  • lb:load byte
  • lh:load half word
  • lw:load word
  • lbu:load byte unsigned
  • lhu:load half word unsigned
  • 功能:从存储器读出数据装入寄存器

3条S型存数指令:Store to Memory

  • sb:store byte
  • sh:store half word
  • sw:store word
  • 功能:将寄存器数据写入cunchuq

六、8条转移指令

2条J型/I型跳转并链接指令

  • jal:jump and link
  • jalr:jump and link-rs1 

6条B型条件分支指令:转移控制

  • beq:branch if equal
  • bne:branch if not equal
  • blt:branch if less then
  • bge:branch if great or equal
  • bltu:branch if less then-unsigned
  • bgeu:branch if great or equal-unsigned

七、10条其他指令

2条存储器屏障指令

6条系统指令

2条断点指令

八、RV32I的寻址方式

RV32I指令集操作数:有立即数、寄存器和存储器三种类型

寻址方式:立即寻址、寄存器寻址、基址寻址、相对寻址

直接寻址:由指令中的立即数字段指定,需要拓展为32位立即数

 

寄存器寻址:在某个整数寄存器中,由指令给出5位寄存器编号rs1、rs2、rd

基址寻址:用于存数和取数指令

  • 操作数:在主存的某个单元中,EA = (rs1) + 偏移量(offset)
  • 指令:给出rs1的5位编号和12位偏移量(立即数字段)
  • 偏移量:需要经过立即数扩展变成32位偏移量,即 EA = (rs1) + SE32(imm32)

相对寻址:用于J型和B型无条件转移指令和条件分支指令

  • 转移目标地址:PC和偏移量之和,指令中给出偏移量

  • 15
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllinTome

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值