本帖最后由 电子烂人 于 2024-11-14 13:56 编辑
向量指令集RV32V,是为了给RV32I基础指令集增加“向量处理能力”而生的指令集,算是一种数据级的并行处理,能够有效提高处理器的性能。
RV32V主要引入了向量寄存器和向量操作,寄存器可以存储多个数据元素,允许同时执行多个操作;而向量指令可以对向量寄存器中的多个数据元素同时执行相同的操作,从而提高数据处理的吞吐量(RV32V向量加载和存储指令)。同时RV32V支持可变长度的向量操作,这意味着向量的大小可以灵活调整。
指令列表:
-
向量加载指令:
vlw
:加载一个字(32位)向量。
vlh
:加载一个半字(16位)向量。
vlb
:加载一个字节(8位)向量。
vlwu
:加载一个无符号字向量。
vlhu
:加载一个无符号半字向量。
vlbu
:加载一个无符号字节向量。
-
向量存储指令:
vsw
:存储一个字向量。
vsh
:存储一个半字向量。
vsb
:存储一个字节向量。
-
向量算术和逻辑指令:
vadd
:向量加法。
vsub
:向量减法。
vmul
:向量乘法。
vdiv
:向量除法。
vmin
:向量最小值。
vmax
:向量最大值。
vand
:向量逻辑与。
vor
:向量逻辑或。
vxor
:向量逻辑异或。
vnot
:向量逻辑非。
-
向量比较指令:
vcmpeq
:向量相等比较。
vcmplt
:向量小于比较。
vcmple
:向量小于等于比较。
vcmpgt
:向量大于比较。
vcmpge
:向量大于等于比较。
-
向量位移指令:
vsll
:向量逻辑左移。
vsrl
:向量逻辑右移。
vsra
:向量算术右移。
-
向量掩码和条件操作指令:
vmerge
:根据掩码合并两个向量。
vselect
:根据条件选择向量元素。
-
向量扩展和缩减指令:
vsext
:符号扩展向量元素。
vzext
:零扩展向量元素。
vtruncate
:缩减向量元素的大小。
-
向量宽度和掩码操作指令:
vsetvl
:设置向量长度和掩码。
vfirst
:找到第一个符合条件的向量元素。