RISC-V指令集架构------RV32M乘法扩展指令集

0 概述

    上一节介绍了RISC-V的基本指令集: RISC-V指令集架构------RV32I基础整数指令集_努力学习的小英的博客-CSDN博客

   这节在RV32I的基础上继续介绍M型扩展指令。

    M类型扩展指令是RISC-V指令集中的一种扩展,它是针对嵌入式系统设计的,主要用于数字信号处理(DSP)和媒体应用。RV32M指令集为RISC-V架构提供了一组特定的指令,可以执行高效的数学运算、信号处理和数据压缩,从而提高了系统的性能和效率。

1 乘法扩展指令集

    M类型扩展指令集提供了一系列整数乘除指令,包括单周期乘除指令、乘累加指令、带余数除法指令等。这些指令可以用于执行高效的整数乘除运算,从而提高系统的性能和效率:

  • 乘法指令集:包括单周期乘法指令、乘累加指令和伪随机数生成指令。这些指令可以用来执行高速乘法、乘累加和随机数生成等操作;
  • 除法指令集:包括单周期除法指令和带余数除法指令。这些指令可以用来执行高精度除法操作,从而提高了系统的运算速度和精度;
  • 加速指令集:包括一系列指令,可以用于执行高效的算术运算、移位操作、位操作和逻辑运算。这些指令可以实现快速、高效的数据处理操作。

以RV32M为例,其所有指令均为R型指令,具体格式如下(2018年发布的v2.1版本):

2. RV32M指令详细介绍

2.1 乘法指令

2.1.1 MUL指令(mul rd,rs1,rs2)

  • 乘(Multiply),寄存器x[rs2]乘以寄存器x[rs1],并将乘积写入x[rd],忽略算数溢出。

2.1.2 MULH指令(mul rd,rs1,rs2)

  • 高位乘(Multiply High),把寄存器x[rs2]乘以寄存器x[rs1],都视为2的补码,将乘积的高位写入x[rd]。

2.1.3 MULHSU指令(mulhsu rd,rs1,rs2)

  • 高位有符号-无符号乘(Multiply High Signed-Unsigned),把寄存器x[rs2]乘以寄存器x[rs1],其中x[rs1]为补码,x[rs2]为无符号数,将乘积的高位写入x[rd].

2.1.4 MULHU指令(mulhu rd,rs1,rs2)

  • 高位无符号乘(Multiply High Unsigned),把寄存器x[rs2]乘以寄存器x[rs1],两者均为无符号数,计算结果的高位写入x[rd]。

2.2 除法指令

2.2.1 DIV指令(div rd,rs1,rs2)

  • 除法(Divide),用寄存器x[rs1]的值除以寄存器x[rs2]的值,向零舍入,将这些数视为二进制补码,把商写入x[rd]。

2.2.2 DIVU指令(div rd,rs1,rs2)

  • 无符号除法(Divide,Unsigned),用寄存器x[rs1]的值除以寄存器x[rs2]的值,向零舍入,将这些数据视为无符号数,把商写入x[rd]。

2.2.3 REM指令(rem rd,rs1,rs2)

  • 求余数(Remainder),x[rs1]除以x[rs2]向0舍入,都视为2的补码,余数写入x[rd]。

2.2.4 REMU指令(rem rd,rs1,rs2)

  • 求无符号数的余数(Remainder,Unsigned),x[rs1]除以x[rs2],向0舍入,都视为无符号数,余数写入x[rd]。

猜你喜欢

转载自blog.csdn.net/qq_38798111/article/details/129718824