RISV的一些学习记录

本文详细介绍了RISC-V指令集架构,包括6种指令格式(R、I、S、B、U、J型),寻址方式和指令类型。RISC-V指令简洁,所有指令均为32位长,采用31个32位寄存器,优化了性能功耗比。其加载和存储使用符号扩展12位立即数,分支跳转通过12位立即数计算。此外,RISC-V拥有少量基本指令,适合不同级别的CPU,支持静态和动态分支预测机制。该架构设计有利于简化硬件设计,提高效率。

在设计一款处理器之前,我们需要确定他的指令集架构。而指令集架构又包括指令格式、寻址方式、指令类型。

指令格式

  • 用于寄存器-寄存器的R型指令
  • 用于短立即数和访问load的I型指令
  • 用于访问store的S型指令
  • 用于条件分支跳转的B型指令(6条)
  • 用于长立即数的U型指令
  • 用于无条件分支跳转的J型指令(2条)

寻址方式

  • 加载和存储支持的唯一类型寻址方式是符号扩展12位立即数到基地址寄存器
  • 分支指令寻址方式是12位立即数乘以2,符号扩展它,将得到的值加到PC上作为分支的跳转地址

指令类型

1.运算类指令:用于实现算术,逻辑,比较等;
2.分支转移指令:实现条件转移,无条件转移等运算,没有延时槽
3. 加载和存储指令:实现字节、半字,字的加载、存储操作,采用的都是寄存器相对寻址方式
4. 控制与状态寄存器访问指令:实现系统控制与状态寄存器的读-写操作,原子读-修改,原子读-清零等操作
5. 系统调用指令:实现对系统调用,调试等功能

这种指令格式规范有序,有着数学之美,优点如下:

  • 这种格式可提高性能功耗比,指令只有6种格式,并且所有的指令都是32位长,这简化了编码;
  • RSIC-V指令提供三个寄存器操作数,而不是像x86-32一样,让源操作数和目的操作数共享一个字段,减少了软件的程序操作【减少了一条move指令,来保存目的寄存器的值】
  • 对于所有指令,要读写的寄存器标识符总是在同一位置,将源寄存器和目标寄存器固定在同样位置,以简化指令译码。【意味着在解码之前,就可以先访问寄存器
  • 这些格式的立即字段总是符号扩展,符号位总是在指令中最高位。意味着可能成为关键路径的立即数符号扩展,可以在指令解码之前进行。

访问指令

  • RISC-V架构的指令数目很简洁,基本指令只有47条,采用小端格式,采用松散存储器模型
  • RISC-V架构只有6条带条件跳转指令,减少指令的条数,同时硬件设计上更简单
  • RISC-V对于没有分支预测器的低端CPU,采用静态分支预测机制,对于配有硬件分支预测器的高端CPU,还可以采用高级的动态分支预测机制来保证性能。

RISC-V 优点

  1. 32位字节寻址空间
  2. 所有指令均为32位长
  3. 31个寄存器组,全部为32位宽,寄存器0硬连线为零
  4. 所有指令操作都是寄存器到寄存器,访问快(没有寄存器到内存操作)
  5. 加载/存储字加上有符号和无符号加载/存储字节和半字
  6. 所有算术、逻辑和移位指令都有立即数版本的指令
  7. 立即数总是符号扩展
  8. 仅提供一种数据寻址模式(寄存器+立即数)和PC相对分支
  9. 无乘法或除法指令
    10.一个指令,用于将大立即数加载到寄存器的高位,这样加载32位常量到寄存器只需要两条指令。
    参考:
    zhuanlan.zhihu.com/p/264836697
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值