①代码量更少,因为不需要循环控制代码,同时向量长度寄存器的存在,使得不论n为何值,向量指令都可以工作,而无须处理边界问题; ②取指和译码的次数更少,因为每个SIMD循环在向量模式下只操作2到4个元素,而RV32V为64个元素,因此SIMD执行的指令数比RV32V多10到20倍,额外的取指和译码意味着在执行相同任务时要耗费更多的能量; ③指令更精简,像MIPS-32和x86-32这些遵循增量主义的ISA,由于没有向量长度寄存器会让指令数和循环控制代码暴增。当SIMD寄存器宽度发生变化时,都需要复制所有那些为之前SIMD寄存器宽度定义的指令。因此,在许多代SIMD ISA的传承中一共创造了数百条MIPS-32和x86-32指令,而且将来还会有数以百计的新指令出现。而RV32V代码不受向量寄存器的可用存储空间的大小影响。如果向量内存变大,不仅RV32V不会改变,而且甚至不用重新编译。处理器提供了最大向量长度mvl的值,因此无论处理器将用于向量的存储空间从1024字节提升到了4096字节,还是将其降低到256字节,其代码都不受影响; ④将ISA与实现相分离,不同于SIMD,需要在ISA中分配硬件(这种更改还会导致编译器的更改),RV32V ISA允许处理器设计人员为其应用分配合适资源用于数据并行,而不必影响程序员或编译器,满足将ISA和实现分离开来的ISA设计原则。
|