之前对比了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文件,我也懒得再去自己写了。
|