之前对比了RISC-V和Cortex-M的代码密度,结论是同样功能,RISC-V要多用大约6成的FLASH空间,追求面积优化的应用器件选型时需要注意,那么性能如何呢?本文对比了一下。
测试方法使用Dhrystone 2.1源代码,RISC-V分别和M4,M3核心对比,测试结果如下:
RISC-V芯片,GD32VF103,RV32IMAC核心,8M主频,GCC编译器
-O3优化,实测时间54.39ms
-Os优化,实测时间94.09ms
-Ofast优化,实测时间54.39ms,与-O3完全一样
ARM芯片,GD32F330,Cortex-M4核心,8M主频,AC6编译器
-O3优化,实测时间38.40ms
-Os优化,实测时间39.15ms
-Ofast优化,实测时间38.40ms,与-O3完全一样
-Oz优化,实测时间57.09ms
GD32F103,Cortex-M3核心,8M主频,AC6编译器
-O3优化,实测时间45.92ms
-Os优化,实测时间46.68ms
-Ofast优化,实测时间45.92ms,与-O3完全一样
-Oz优化,实测时间64.88ms
结论:
最大速度优化情况下,RISC-V执行时间是M4的54.39/38.40*100%=141.64%,是M3的54.39/45.92*100%=118.45%。
粗略来看,RISC-V同频性能比M4慢大约4成,比M3大约慢2成。当然这里面肯定有编译器的差距,GCC肯定是要比AC6弱的,这点毋庸置疑。
ARM也有GCC编译器可用,不过大多数ARM用户都是使用ARM的编译器,对比两者在GCC编译器下的表现意义并不大。
还有一点是GD没有提供GCC编译器的startup文件,我也懒得再去自己写了。
离线
都用GCC编译对比一下呗,gd32f103可以直接用st的cubemx生成出来的makefile,稍微替换一下几个文件就行了。gd32f330也是同理,用一个st的f4核心的mcu生成工程就行了。
离线
编译器不同,这样对比意义不大
离线