RISC-V VV与玄铁C910:指令对比与详解

需积分: 50 9 下载量 31 浏览量 更新于2024-07-15 收藏 2.56MB PDF 举报
该文档是对2020年4月15日关于玄铁C910与RVV(RISC-V Vector Extension)指令集的对比总结,由PLCT实验室的王鹏实习生撰写。主要探讨了两者的差异和特点,特别是针对C910中vector指令与RVV的VAMO(Vector Atomic Memory Operations)指令的比较。 在C910的矢量指令集中,VAMO指令如VAMOADDD、VAMOADDW和VAMOADDQ,其指令格式定义在RISCVInstrInfoV.td中。这些指令在C910的Inst编码中有所不同,例如,VAMOADDD的Inst(14-12)值为0b111,而VAMOADDW的Inst(14-12)为0b110,VAMOADDQ的Inst(14-12)为0b000。RISCVInstrInfoV.td还区分了_wd_m、_wd_um、_m和_um四种情况,反映了不同的回写和掩码行为。 特别值得注意的是,VAMO指令中的VALU_AMO_E在C910中与矢量原子双字加法指令重合,表明C910在处理这些原子操作时与RVV有相似但可能不完全一致的功能。文档还提到了矢量运算的扩展指令,如VWSMACC系列指令,用于有符号、无符号乘累加运算,并支持饱和扩展和取反操作。这些指令在RVV规格中定义,但具体实现可能因C910的定制化而有所变化。 这份文档通过实例和代码截图深入剖析了C910和RVV在指令设计上的异同,对于理解这两种指令集在实际应用中的特性和优化策略具有参考价值。对于从事RISC-V架构或硬件开发的人来说,理解这些细节至关重要,因为它们直接影响到程序的性能和可移植性。